Как отображать два столбца таблицы в строке в 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>

Любая помощь будет принята с благодарностью.

Ответ 1

$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 на первую итерацию, но на второй итерации в начале...

Ответ 2

Вы можете использовать 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.

Ответ 3

Это даст вам отличную таблицу и концепцию цикла -

<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>

Ответ 4

<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>