Я хотел бы отображать данные, по два столбца на строку во время моего foreach. Я хотел бы, чтобы мой результат выглядел следующим образом:
<table> <tr><td>VALUE1</td><td>VALUE2</td></tr> <tr><td>VALUE3</td><td>VALUE4</td></tr> <tr><td>VALUE5</td><td>VALUE6</td></tr> </table>
Любая помощь будет принята с благодарностью.
$i=0; foreach ($x as $key=>$value) { if (fmod($i,2)) echo '<tr>'; echo '<td>',$value,'</td>'; if (fmod($i,2)) echo '</tr>'; $i++; }
это будет выводить TR (строка) каждый второй раз
ps: я не тестировал код, так что, возможно, вам нужно будет добавить! знак перед fmod, если он не выводит TR на первую итерацию, но на второй итерации в начале …
Вы можете использовать array_chunk()
для разбиения массива данных на меньшие массивы, в данном случае длины 2 для каждой строки.
<table> <?php foreach (array_chunk($values, 2) as $row) { ?> <tr> <?php foreach ($row as $value) { ?> <td><?php echo htmlentities($value); ?></td> <?php } ?> </tr> <?php } ?> </table>
Обратите внимание, что если у вас есть нечетное число значений, это оставит окончательную строку только с одной ячейкой. Если вы хотите добавить пустую ячейку, если необходимо, вы можете проверить длину $row
внутри внешнего foreach
.
Это даст вам отличную таблицу и концепцию цикла –
<table border="1" cellspacing="0" cellpadding="2"> <?php for($x=1; $x<=20; $x++) { echo "<tr>"; for($y=1; $y<=20; $y++) { echo "<td>"; echo $x*$y; echo "</td>"; } echo "</tr>"; } ?> </table>
<table> <?php $i=0; foreach ($x as $key=>$value) { if (!$i%2) echo '<tr>'; echo '<td>',$value,'</td>'; if ($i%2) echo '</tr>'; $i++; } ?> </table>