これにはさまざまなアプローチがあるので、楽しんでみてはいかがでしょうか。
for ループを使用する必要がある場合
学校の課題でない限り、なぜそうするのかわからない:
for($i=0;$i<count($data);$i++) {
echo('<tr>');
echo('<td>' . $data[$i][0] . '</td>');
echo('<td>' . $data[$i][1] . '</td>');
echo('<td>' . $data[$i][2] . '</td>');
echo('</tr>');
}
しかし、ID に直接アクセスするのはちょっとばかげているので、行で別の for ループを使用しましょう。
for($i=0;$i<count($data);$i++) {
echo('<tr>');
for($j=0;$j<count($data[$i]);$j++) {
echo('<td>' . $data[$i][$j] . '</td>');
}
echo('</tr>');
}
同じように退屈な foreach ループに置き換えます。
<table>
<?php foreach($items as $row) {
echo('<tr>');
foreach($row as $cell) {
echo('<td>' . $cell . '</td>');
}
echo('</tr>');
} ?>
</table>
配列を内破しない理由:
<table>
<?php foreach($items as $row) {
echo('<tr>');
echo('<td>');
echo(implode('</td><td>', $row);
echo('</td>');
echo('</tr>');
} ?>
</table>
それを混ぜて、foreach を台無しにして、散歩に出かけましょう。途中で内破します:
<?php
function print_row(&$item) {
echo('<tr>');
echo('<td>');
echo(implode('</td><td>', $item);
echo('</td>');
echo('</tr>');
}
?>
<table>
<?php array_walk($data, 'print_row');?>
</table>
ダブルウォーキング... OMG
ええ、今は少しばかげているように見えますが、テーブルを大きくして物事がより複雑になると、物事はもう少しうまく分割され、モジュール化されます。
<?php
function print_row(&$item) {
echo('<tr>');
array_walk($item, 'print_cell');
echo('</tr>');
}
function print_cell(&$item) {
echo('<td>');
echo($item);
echo('</td>');
}
?>
<table>
<?php array_walk($data, 'print_row');?>
</table>