Zufällige Bilder aus Ordner

Wir sammeln alle Infos der Bonusepisode von Pokémon Karmesin und Purpur für euch!

Zu der Infoseite von „Die Mo-Mo-Manie“
  • Hi ;)


    Also ich hab hier ein Codeschnipsel geschrieben, der Bilder aus einem Ordner ausliest und dann beliebig viele davon zufällig ausgiebt.
    Ich erklär ihn hier Schritt für Schritt und unten gibts den nochmal zum kopieren. Ihr dürft mit dem Codeschnipsel natürlich machen was ihr wollt ;) .


    PHP
    //	$Bilder = array();	$Ordner = "bilder";	$dateiendungen = array("png", "jpg");	$anzahl = 5;	$nummern = array();


    So. In $Bilder werden später alle Bilder aus dem Ordner hineingeschrieben. Ihr könnt jetzt schon in $Bilder Bilder hineinschreiben, die nicht in diesem Ordner sind. $Ordner ist der eigentliche Ordner in dem die Bilder gesucht werden. Der Ordner sollte so angegeben werden, es kann sich aber auch um einen "." für das Verzeichnis, indem das PHP-Script selber liegt, handeln. $dateiendungen sind die erlaubten Dateiendungen, die können je nach Bildern angepasst werden. $anzahl ist die Anzahl der Bilder, die herrauskommen soll. $nummern wird später benutzt, um doppelte Bilder zu vermeiden.

    PHP
    //	$ordner = opendir($Ordner);	while ($Datei = readdir($ordner)) {		if(!is_dir($Datei)) {			if ($Datei != "..") {				if (strstr($Datei, ".")) {


    So. Der Ordner wird geöffnet, die Dateien werden ausgelesen. Dann wird geschaut, ob die Datei wirklich eine Datei ist, und kein Ordner.

    PHP
    //					$punkt = strrpos($Datei, ".");					$endung = strtolower(substr($Datei, $punkt + 1));					if (in_array($endung, $dateiendungen)) {						$Bilder[] = $Ordner . "/" . $Datei;					}				} 			}		}	}	closedir($ordner);


    Hier wird die Dateiendung ausgelesen und überprüft, ob die Datei auch ein Bild ist. Dann wird das Bild in das Array mit Bildern geschrieben.

    PHP
    //	$anzahlbilder = count($Bilder) - 1;	if ($anzahl > $anzahlbilder) {		$anzahl = $anzahlbilder;	}


    So. Hier wird die Länge des Arrays ausgewertet. Dann wird noch die gewollte Anzahl an Bildern überprüft. Ist diese nämlich höher als die der Bilder, bleibt das Script in der Schleife, was nich so gut wäre :P . Kommen wir zur Schleife selber:

    PHP
    //	for ($i = 1; $i <= $anzahl; $i++) {		srand(microtime()*1000000);		$nummer = rand(0, $anzahlbilder);		if (!in_array($nummer, $nummern)) {			$nummern[] = $nummer;			echo "<img src=\"" . $Bilder[$nummer] . "\">";		} else {			$i--;		}	}


    Hier wird eine Zufallszahl erstellt. Mit in_array prüfen wir, ob wir das Bild schon haben. ! verneint das ganze, also fragt ab ob wir das Bild noch nicht haben. Wenn wir es noch nicht haben, wird es in das Array eingetragen und dann ausgegeben. Wenn nicht wird der Zähler wieder 1 zurück gesetzt, damit sie nochmal nach einem Bild sucht.


    So, wie versprochen hier nocheinmal der gesamte Codeschnipsel zum kopieren:


    Kleiner Hinweis noch, die // hab ich nur hingeschrieben, damit richtig eingerückt wird.


    So ich hoff euch gefällt der Codeschnipsel und wenn ihr noch Fragen habt, fragt einfach ;)

    :thumbsup:

    Yeah, hatte grade meinen 256. Beitrag :D Beim 512. wird dann aber richtig gefeiert :D

    Einmal editiert, zuletzt von Chris! ()