PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : array Problem - Gültigkeit?



tybalt0125
10-08-2005, 13:02
Hallo Leute,
ich war bis jetzt stiller Mitleser und habe auch schon viel Probleme mit Hilfe dieses Forums lösen können, allerdings weiss ich im Moment nicht weiter und hoffe das Ihr mir hierbei helfen könnt.

Ich versuche eine Gallery zu programmieren und habe jetzt ein Problem.
Es werden alle Bilder aus dem Verzeichnis in ein array eingelesen. Wenn ich allerdings das array später nutzen möchte, scheint es leer zu sein, wie kann das?

bei dem ersten (auskommentierten) print_r scheint noch alles normal zu sein, allerdings ist dann bei dem zweiten print_r das array anscheinend leer. Wie kann das?

$i=1;
while($file=readdir($dir)) {
if( ($file!=".") && ($file!="..") && ($file!="index.php") && ($file!=$thumbdir) ) {
$bild = array($i => $file);
/*if(!file_exists("$thumbdir/$bild[$i]")){
mkthumb($bild[$i], $thumbdir);
}*/
$i++;
}
//print_r($bild);
}
print_r($bild);
Ich hoffe auf eure Hilfe.
Danke schon einmal im vorraus.

Pingu
10-08-2005, 13:20
Hi,

ich versuche mal direkt zu kommentieren:


$i=1;
while($file=readdir($dir)) {
if( ($file!=".") && ($file!="..") && ($file!="index.php") && ($file!=$thumbdir) ) {

$bild = array($i => $file);
Hiermit wird die Variable $bild überschrieben (egal was da vorher drin war) mit einem Array, welches genau ein Element beinhaltet.

/*if(!file_exists("$thumbdir/$bild[$i]")){
mkthumb($bild[$i], $thumbdir);
}*/
$i++;
}
//print_r($bild);
}
print_r($bild);

Ich würde es daher umschreiben:
$i=1;
$bilde=array();

while($file=readdir($dir)) {

// Vorteil: man kann Ausschlusskriterien (Files) relativ
// einfach hinzufügen und behält trotzdem den Überblick.
if ($file == ".") continue;
if ($file == "..") continue;
if ($file == "index.php") continue;
if ($file == $thumbdir) continue;

// damit wird das Element direkt dem Index zu geordnet
// wenn unter diesem Index bereist ein Element existiert,
// wird es überschrieben
// wenn kein Element mit diesem Index existiert, wird es
// erzeugt
$bild[$i] = $file;

if (!file_exists("$thumbdir/$bild[$i]"))
mkthumb($bild[$i], $thumbdir);

$i++;

//print_r($bild);

} // while($file=readdir($dir))

print_r($bild);


Pingu

tybalt0125
10-08-2005, 13:25
jo, ich danke Dir...
sieht super aus. werde ich dann auch mal umschreiben.

Allerdings habe ich meinen Hauptfehler schon gefunden.
Ich habe bei jedem Schleifendurchlauf, das array neu initialisiert, somit waren vorherige Speicherungen wieder
verloren gegangen.

Danke

tybalt0125
11-08-2005, 16:57
Ich habe noch ein Problem mit meinem kleinen Script und weiss nicht, ob ich da jetzt nen neuen Thread für eröffnen soll, deshalb poste ich das jetzt erstmal hier.

Ich weiss das die nachfolgende Fehlermeldung aufgrund der Dauer, die das Skript ausgeführt wird, erscheint.
Meine Frage ist jedoch, ob es normal ist, wenn man Thumbnails generiert oder ob ich einfach falsch programmiert habe.

Fatal error: Maximum execution time of 30 seconds exceeded in ...

Pingu
11-08-2005, 19:52
Das kommt darauf an wieviel Thumbnails Du auf einmal generieren möchtest. Aber bedenke, wenn das Generieren eines Thumbnails ca. 3 s benötigt, sind es bei 10 Bildern schon die 30 s und dabei ist die eigentliche Zeit für den Rest des Scriptes noch nicht mit gerechnet.

Pingu

tybalt0125
11-08-2005, 20:08
Das kommt darauf an wieviel Thumbnails Du auf einmal generieren möchtest. Aber bedenke, wenn das Generieren eines Thumbnails ca. 3 s benötigt, sind es bei 10 Bildern schon die 30 s und dabei ist die eigentliche Zeit für den Rest des Scriptes noch nicht mit gerechnet.

Pingu
das kommt hin.
Na dann bin ich ja erstmal beruhigt... :)

Danke