Rekursions-Problem

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

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


    Last edited by 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
    Last edited by markusschmitt; 15-02-2004, 10:32.

    Comment

    Working...
    X