web-dev-qa-db-ja.com

PHPループの行ごとに2つのテーブル列を表示する方法

Foreach中に1行に2列のデータを表示したいと思います。結果を次のようにしたいと思います。

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

どんな助けでも大歓迎です。

11
brad
$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:コードをテストしていないので、追加する必要があるかもしれません!最初の反復ではTRを出力しないが、最初の2番目の反復でTRを出力する場合は、fmodの前に署名します。

11
dusoft

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>

値の数が奇数の場合、これにより最終行にセルが1つだけ残ることに注意してください。必要に応じて空のセルを追加する場合は、外側のforeach内の$rowの長さを確認できます。

41
Ben James

これはあなたに素晴らしいテーブルとforループの概念を与えるでしょう-

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