Как отображать два столбца таблицы в строке в php-контуре

Я хотел бы отображать данные, по два столбца на строку во время моего 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>