PHP for loop 按数量升序显示条目

问题描述

由于 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>';