Natürlich haut das so nicht hin, weil du ja immer im gleichen Schleifendurchlauf das öffnende
und schließende TR-Element ausgibst - d.h., du erzeugst immer ein mal <tr><td></td></tr>, und die TDs aus den anderen Schleifendurchläufen hängen ohne TR in der Luft herum ...
Sinnvoller ist es, wenn du die aktuelle Zeile schließt und danach sofort die nächste öffnest, wenn die Zeilenwechsel-Bedingung eintritt:
PHP-Code:
<table><tr>
<?php
$reihe = 4;
for($i=0; $i<16; $i++) {
if($i > 0 && $i % $reihe == 0) {
echo "</tr>\n<tr>";
}
echo '<td>'.$i.'</td>';
}
?>
</tr></table>
Was passiert, wenn die Anzahl der Bilder nicht restlos durch 4 teilbar ist, und ob darauf ggf. reagiert werden muss, solltest du dir noch überlegen.