Ich habe ein kleines Rekursions Problem, bzw liegt das Problem nicht genau in der Rekursion sondern am x maligen Aufruf der Funktion. Vorher hatte ich mein array als static deklariert, da bekam ich alle Ordner zurück. Rufe ich das Skript jedoch ein 2tes mal auf ist das alte Array immernoch vorhanden und das Array verdoppelt sich sozusagen. Dies wollte ich lösen in dem ich die eigentliche Funktion als private deklarier und mir von der public Funktion ein leeres Array übergeben lass. Das Problem ist jetzt, dass komischerweise außer dem Grundordner keine Daten mehr hinzugefügt werden. Woran kann des liegen?
Insgesamt enthält mein Testordner 5 Ordner und 13 Dateien.
3 Ordner davon befinden sich im Grundordner sowie 2 Textdateien.
Ausgabe beim Aufruf (print_r($ftp->recursive()); ):
[/php]
PHP-Code:
function recursive(){
return $this->_recursive(array());
}
function _recursive($array) { // vorher recursive()
// so funktioniert es noch: static $array = array();
$informations = $this->get_directory_informations();
for($i=0;$i<sizeof($informations);$i++) {
array_push($array, $informations[$i]);
if($informations[$i]['directory']) {
if(ftp_chdir($this->connId,$informations[$i]['name'])) {
echo "Funktion wird aufgerufen<br>";
$this->_recursive($array); //vorher $this->recursive();
ftp_cdup($this->connId);
}
}
}
return $array;
}
3 Ordner davon befinden sich im Grundordner sowie 2 Textdateien.
Ausgabe beim Aufruf (print_r($ftp->recursive()); ):
[/php]
PHP-Code:
Funktion wird aufgerufen
Funktion wird aufgerufen
Funktion wird aufgerufen
Funktion wird aufgerufen
Funktion wird aufgerufen
Array
(
[0] => Array
(
....
[name] => Ordner 1
)
[1] => Array
(
....
[name] => Ordner 2
)
[2] => Array
(
....
[name] => Ordner 3
)
[3] => Array
(
....
[name] => Textdatei 1.txt
)
[4] => Array
(
....
[name] => Textdatei 2.txt
)
)
Kommentar