Как отобразить два столбца таблицы на строку в цикле 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>
Любая помощь будет принята с благодарностью.
4 ответа
$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>