Hallo!
Soo... um alle unklarheiten zu beseitigen und jetzt mal klarheit zu schaffen:
Hier die Lösung für dein Problem!
@localhost:
Ich habe es so gut dokumentiert wie ich konnte... ich hoffe jetzt verstehst auch du das!
@msi:
Schau dir mal die Modulo Geschichte an! Eignet sich für solche Sachen besser.
PHP-Code:
<?php
//Wir füllen das Array $bilder mit Werten
$bilder[]="bild1.jpeg";
$bilder[]="bild2.jpeg";
$bilder[]="bild3.jpeg";
$bilder[]="bild4.jpeg";
$bilder[]="bild5.jpeg";
$bilder[]="bild6.jpeg";
$bilder[]="bild7.jpeg";
$bilder[]="bild8.jpeg";
$bilder[]="bild9.jpeg";
$bilder[]="bild0.jpeg";
//Jetzt mischen wir das Array zufällig durch
shuffle($bilder);
//Jetzt bauen wir uns die Ausgabe zusammen.
//<table> muss ausserhalb der schleife stehen... nur das was
//sich wiederholt kommt innenrein
echo "<table>\n";
//Wir öffnen das erste <tr>
echo "<tr>\n";
//Nun legen wir fest wieviele Bilder wir pro Zeile anzeigen wollen:
$bpz=2;
//Ich verwende einen etwas weniger umständlichen Ansatz um
//herauszufinden, ob wir ein <tr> ausgeben müssen!
//Jetzt wird das $bilder array genommen und für jeden eintrag im
//Array wird ein Schleifendurchlauf erzeucht (for each halt!).
//Dabei ist $i der Schlüssel des aktuellen Array eintrags und
//$bild der Wert!
foreach($bilder as $i=>$bild) {
//Wir verwenden Modulo, um zu prüfen ob wir <tr> ausgeben müssen!
//Die Modulo Operation ergibt den Rest einer Division...
//Wenn also der Index des Arrays ohne Rest durch $bpz
//Teilbar ist müssen wir eine neue Tabellenzeile ausgeben.
//Wir müssen die Ausgabe aber verhindern, falls der Index 0 ist, da dieser
//immer den Rest 0 hat
if (!($i % $bpz) && ($i>0)) {
echo "</tr>\n";
echo "<tr>\n";
}
echo "<td>$bild</td>\n";
//Jetzt zählen wir hoch!
$i++;
}
//Nun fügen wir noch Dummy <td>´s ein, falls wir nicht genug Bilder für die letzte
//Zeile mehr haben (ansonste zerreist es uns ja die Tabelle)!
while ($i % $bpz) {
echo "<td> </td>\n";
$i++;
}
//Wir schließen das letzte <tr> und die Tabelle
echo "</tr>\n";
echo "</table>\n";
?>
Lesezeichen