Rekursions-Problem

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Rekursions-Problem

    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?

    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;

    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:
    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
            
    )


    Zuletzt geändert von markusschmitt; 14.02.2004, 20:13.

  • #2
    Hab's jetzt nach zich Stunden basteln hin bekommen wenns auch in wirklichkeit nicht so schwer war.
    PHP-Code:
        var $array;

        function 
    recursive() {
            
    $this->array = array();
            return 
    $this->_recursive();
        }

        function 
    _recursive() {
            
    $informations $this->get_directory_informations();
            for(
    $i=0;$i<sizeof($informations);$i++) {
                
    array_push($this->array$informations[$i]);
                if(
    $informations[$i]['directory']) {
                    if(
    ftp_chdir($this->connId,$informations[$i]['name'])) {
                        
    $this->_recursive();
                        
    ftp_cdup($this->connId);
                    }
                }
            }
            return 
    $this->array;
        } 
    MfG Markus
    Zuletzt geändert von markusschmitt; 15.02.2004, 10:32.

    Kommentar

    Lädt...
    X