问题描述
由于 for 函数,第二个 foreach 函数在每 <td>
个 x 次中显示。
必须将第二个 foreach 替换为什么,以便每个 <td>
只显示一次?
echo '<div class="responsive">';
echo '<table class="table">';
echo '<thead>';
echo '<tr>';
echo '<th>Bestellung #</th><th>Lieferant</th><th>Vsl. WE</th>';
echo '</tr>';
echo '<tbody>';
foreach($arr->entries as $order => $value) {
echo '<th scope="row">' . $value->id . '</th>';
echo '<td scope="col">' . $value->contactSender->accounts[0]->companyName . '</td>';
for ($i = 0; $i <= $arr->totalsCount; $i++) {
foreach($arr->entries[$i]->dates as $order => $value) {
if($value->typeId == 11) echo '<td scope="col">' . $value->date . '</td>';
}
echo '</tr>';
}
}
echo '</table>';
echo '</div>';
解决方法
for
循环在 $arr->entries
上进行迭代,因此您正在将该数组中的每个元素相互交叉。只需使用迭代 foreach
数组的第二个 dates
循环。
另外,不要在嵌套循环中重复使用 $value
迭代变量。在这里似乎没有造成任何问题,但令人困惑。
echo '<div class="responsive">';
echo '<table class="table">';
echo '<thead>';
echo '<tr>';
echo '<th>Bestellung #</th><th>Lieferant</th><th>Vsl. WE</th>';
echo '</tr>';
echo '<tbody>';
foreach($arr->entries as $value) {
echo '<th scope="row">' . $value->id . '</th>';
echo '<td scope="col">' . $value->contactSender->accounts[0]->companyName . '</td>';
foreach($value->dates as $value2) {
if($value2->typeId == 11) echo '<td scope="col">' . $value2->date . '</td>';
}
echo '</tr>';
}
echo '</table>';
echo '</div>';