• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

scandir()

T!P-TOP

Mitglied
Hi Leute,

habe ein Problem mit der scandir Funktion. Ich habe in den Ordner "images" derzeit 6 Bilder, folgendermaßen möchte ich die Bilder ausgeben:
PHP:
<?php
$images = scandir('../images');
$countImages = count($images);

for ($i = 0; $i <= $countImages; $i++)
{
    echo $images[$i].'<br />';
}
?>

Zuerst wende ich die scandir Funktion an - der Rückgabewert (ein Array) wird in $images gespeichert. Anschließend hol ich mir mit count die Anzahl der Werte des Arrays und speicher die Anzahl in $countImages. In der for-Schleife sollten nun alle Bilder nach der Reihe ausgegeben werden. Funktioniert aber nur teilweise, so sieht die Ausgabe aus:

.
..
Humpback Whale.jpg
background.jpg
bg.png
testsetsetset.jpg

Von den 6 Bildern werden nur 4 ausgegeben (die ersten beiden nicht). Diese scandir Funktion kürzt das erste Bild mit einem und das zweite BIld mit zwei Punkten ab. Wie kann man das verhindern?


Folgende Notice erhalte ich:

Notice: Undefined offset: 6 in /var/www/vhosts/nicolas-pecher.com/httpdocs/acp/images.php on line 52

Dieses Notice bezieht sich auf die for-schleife.Vielen Dank für im vorraus!
Grüße,
Nico
 
Hallo,

also das notic ist klar, geht um eins zu weit.
Code:
hast:
for ($i = 0; $i <= $countImages; $i++)  
richtig 
for ($i = 0; $i < $countImages; $i++)

zweitens:
Von den 6 Bildern werden nur 4 ausgegeben (die ersten beiden nicht). Diese scandir Funktion kürzt das erste Bild mit einem und das zweite BIld mit zwei Punkten ab. Wie kann man das verhindern?
man sieht das nie mit DOS oder Basic zu tun hattest, was ja nicht schlim ist. die punkte zeigern ordner strucktur und kürzen nichts ab.
bist sicher das 6 bilder drin sind denn deine anzeige ist bei 4 Bildern richtig :O).

Cheffchen
 
Ja, sind tatsächlich nur 4 Bilder :D

Gut, das Notice ist nun auch verschwunden - danke.
Was stelle ich nun aber mit der Ordner Struktur an (sprich mit den Punkten)?

Grüße,
Nico
 
Hallo,

na was stellst damit an?
entweder gleich im array das löschen oder in der for schleife eine if abfrage reinmachen.
Code:
  if ($images[$i] != '.' && $images[$i] != '..'){
    echo $images[$i].'<br />';
  }

Cheffchen
 

Neueste Beiträge

Zurück
Oben