Zufallsbilder dürfen sich nicht wiederholen
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
array
ausgabe
ausgeben
auslese
bild
code
dank
datei
double
erscheinen
helfen
image
nummer
ordner
paar
stehen
typ
verbessern
verzeichnis
-
Hallo nochmal.
Ich habe einen Script, welches mir mehrere Zufallsbilder aus einem Ordner nebeneinander anzeigt.
Hier ist mein Code:
<?php /*********** Zufallsbild Nummer 1: ***********/ //Ordner $ordner="images"; //Bildtypen $typen= array("gif","jpg","jpeg","png");; //Bilder auslesen $verzeichnis = opendir($ordner); $bilder = array(); while($datei = readdir($verzeichnis)) { //Dateiendung rausfiltern $datei_endung = substr( strrchr($datei,".") ,1); if(in_array($datei_endung, $typen)) { $bilder[] = $datei; } } //Verzeichnis schließen closedir($verzeichnis); //Zufälliges Bild aus Array suchen srand ((double) microtime() * 10000000); $key = array_rand($bilder); //Bildname ohne Dateiendung $filename = "{$bilder[$key]}"; $array_file = explode(".",$filename); //Bild ausgeben: echo '<img src="'.$ordner."/".$bilder[$key].'" alt="'.$array_file[0].'" width="94" height="94" title="'.$array_file[0].'">'; ?>
Und diesen Code benutze ich ein paar mal hintereinander, damit mehrere Zufallsbilder aus dem Ordner nebeneinander erscheinen.
Wie kann ich das jetzt machen, dass sich keines der Bilder wiederholt? Könnt ihr mir helfen? Wenn es geht, ohne meinen Code großartig zu verändern. Wenn nicht, dann bin ich offen für neue Code Vorschläge.
Gruß -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Hallo safeyourface,
wenn Du mit unset() das ausgewählte Bild aus dem Array löscht, dann kann es kein zweites mal ausgewählt werden:
<?php /*********** Zufallsbild Nummer 1: ***********/ //Ordner $ordner="images"; //Bildtypen $typen= array("gif","jpg","jpeg","png");; //Bilder auslesen $verzeichnis = opendir($ordner); $bilder = array(); while($datei = readdir($verzeichnis)) { //Dateiendung rausfiltern $datei_endung = substr( strrchr($datei,".") ,1); if(in_array($datei_endung, $typen)) { $bilder[] = $datei; } } //Verzeichnis schließen closedir($verzeichnis); //Zufälliges Bild aus Array suchen srand ((double) microtime() * 10000000); $key = array_rand($bilder); //Bildname ohne Dateiendung $filename = "{$bilder[$key]}"; $array_file = explode(".",$filename); unset($bilder[$key]); //ausgewähltes Bild aus dem Array löschen. //Bild ausgeben: echo '<img src="'.$ordner."/".$bilder[$key].'" alt="'.$array_file[0].'" width="94" height="94" title="'.$array_file[0].'">'; // 2. Bild $key = array_rand($bilder); //Bildname ohne Dateiendung $filename = "{$bilder[$key]}"; $array_file = explode(".",$filename); unset($bilder[$key]); //ausgewähltes Bild aus dem Array löschen. //Bild ausgeben: echo '<img src="'.$ordner."/".$bilder[$key].'" alt="'.$array_file[0].'" width="94" height="94" title="'.$array_file[0].'">'; // 3. Bild $key = array_rand($bilder); //Bildname ohne Dateiendung $filename = "{$bilder[$key]}"; $array_file = explode(".",$filename); unset($bilder[$key]); //ausgewähltes Bild aus dem Array löschen. //Bild ausgeben: echo '<img src="'.$ordner."/".$bilder[$key].'" alt="'.$array_file[0].'" width="94" height="94" title="'.$array_file[0].'">'; ?>
-
Danke es hat geklappt. Nur ich muss dich verbessern:
Das unset muss nach der Ausgabe stehen und nicht vorher.
//Bild ausgeben: echo '<img src="'.$ordner."/".$bilder[$key].'" alt="Bild 1" height="40" width="40" title="'.$array_file[0].'">'; unset($bilder[$key]);
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage