Hi kalle,
die Array sind 0-indiziert. Mach mal aus dem
if( $name > 0) ein if( $name >= 0)
dann sollte es klappen.
Ergebnis 1 bis 6 von 6
- 24.07.2010, 21:16 #1
[PHP] Array und verschluckte Werte ...
Hallo Apfeltalk-User,
ich habe mal wieder ein Problem.
Ich lasse mir ein Verzeichnis einlesen und alle Bildernamen in ein Array speichern.
Danach lasse ich das Array sortieren und geben das ganze aus ... jedoch wird immer die letzte Datei (im Verzeichnis) nicht mit eingelesen ... und dementsprechend auch nicht ausgegeben ...
Jetzt die Frage, Wo liegt das Problem, warum ließt er immer die letzte Datei nicht mit ein?
Vielen Dank im Vorraus.Code:<?php $fileAr = array(); $event="Gewitter und Blitze"; if ($dir = @dir("events/$event/")) { while(FALSE !== ($file = $dir->read())) { if ($file == '.' || $file == '..') continue; else { if( strstr($file, ".jpg")) { $file = ereg_replace ( ".jpg", "" , $file ); $fileAr[$file] = $file; }} } $dir->close(); } else die('Verzeichnis existiert nicht!'); sort($fileAr); foreach($fileAr AS $name => $value) { if( $name > 0){ $c++; echo "<img src='events/$event/$name.jpg' width='250' border='0'> "; if($c==3){ $c=0; echo "<br/><br/>"; }}} ?>
mfg
kalle◆ iMac 27" i7 8 GB ◆ MacBook Pro 8.2 8 GB i7 ◆ iPhone 4 32 GB ◆ iPad 2 WiFi 32 GB ◆ TC 1 GB ◆
- 25.07.2010, 00:51 #2Jonagold
- Registriert
- 11.2009
- Ort
- HH ist nicht weit
- Beiträge
- 22
- 25.07.2010, 09:45 #3
Sehe ich das richtig, das das $name einen String darstellt? Dann ist eine Abfrage sowieso nicht nötig. Und da du in der foreach sowieso nur Elemente hast, die auch wirklich im Array sind, ist diese if total unnötig.
Ausserdem ist dein Einrückungsstil recht ungewöhnlich... Ich empfehle dir als Lektüre einmal die PEAR Coding Standards (http://pear.php.net/manual/de/standards.php)
- 25.07.2010, 11:04 #4
Das Problem ist, das meine Bilder im Verzeichnis nach folgendem Schema aufgebaut sind 1.jpg, 2.jpg usw. wenn ich das if ($name > 0) rausnehme, will er mir immer das Bild 0.jpg (was ja nicht existiert) anzeigen ... deshalb dieser Schritt.
Aber selbst wenn ich die if-Abfrage entferne werden nicht alle Bilder angezeigt ...
@_linx_
Ich persönlich Rücke nicht ein, hab das hier nur für die Leser gemacht, da ich mir einer besser Lesbarkeit erhofft habe.
Dadurch das ich einen PHP Editor benutze der mit alle Sachen farbig anzeigt, halte ich das einrücken für sinnlos.◆ iMac 27" i7 8 GB ◆ MacBook Pro 8.2 8 GB i7 ◆ iPhone 4 32 GB ◆ iPad 2 WiFi 32 GB ◆ TC 1 GB ◆
- 25.07.2010, 11:24 #5
Fehler gefunden, ich sollte Nachts nicht mehr Programmieren oder mehr Club Mate trinken ^^
Fehler lag daran, das ich in der foreach schleife anstatt der Variablen $value die Variable $name benutzt habe, was ja total sinnlos ist ...Code:<?php $fileAr = array(); $event="Gewitter und Blitze"; if ($dir = @dir("events/$event/")) { while(FALSE !== ($file = $dir->read())) { if ($file == '.' || $file == '..') continue; else { if( strstr($file, ".jpg")) { $file = ereg_replace ( ".jpg", "" , $file ); $fileAr[$file] = $file; }} } $dir->close(); } else die('Verzeichnis existiert nicht!'); sort($fileAr); foreach($fileAr AS $name => $value) { $c++; echo "<img src='events/$event/$value.jpg' width='250' border='0'> "; if($c==3){ $c=0; echo "<br/><br/>"; }} ?>◆ iMac 27" i7 8 GB ◆ MacBook Pro 8.2 8 GB i7 ◆ iPhone 4 32 GB ◆ iPad 2 WiFi 32 GB ◆ TC 1 GB ◆
- 25.07.2010, 17:10 #6
Was heisst "Ich rücke nicht ein"? Schreibst du alles am Stück oder lässt du das das Programm übernehmen?
Im Prinzip ist es mir ja egal, wie du deinen Code schreibst, aber denke einmal daran, dass du vielleicht ein Projekt weitergeben willst oder ein Produkt verkaufen willst. Wenn du da die ganze Zeit "eigene Standards" bzw. Chaos als Standard festlegst, wirst du keinen Erfolg haben. Gut strukturierter Code ist eine wichtige Grundlage auch bei Fehlersuche!


Zitieren



