[Funktion] Rekursive Funktion gibt keinen Rückgabewert

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

  • [Funktion] Rekursive Funktion gibt keinen Rückgabewert

    Hoi,

    habe ein Problem mit dieser reskursiven Funktion:

    PHP-Code:
    function get_depth($id,$depth=0) {
        echo 
    "Tiefe:".$depth."ID".$id."<br>"//Testecho
        
    if($id == "0") return $depth;
        
    $query querydb("SELECT parent_id FROM tabelle WHERE id = '".$id."'","");
        
    get_depth($query['parent_id'],$depth+1);
    }

    $blubb get_depth('4');
    echo 
    $blubb
    Tiefe:0ID4
    Tiefe:1ID3
    Tiefe:2ID1
    Tiefe:3ID0
    Das gibt das Testecho aus, aber die Funktion gibt einfach nix zurück.
    Die DB-Struktur is ne normale Parent-Kategorie Struktur, wobei die Kategorie 4 die mit der funktion aufgerufen wird, in zweiter Ebene ist.

    Wäre nett wenn ihr mir helfen könntet.
    Danke schonmal

    Dommi

  • #2
    ich meine wir hätten schonmal einen fall gehabt, da hat php zumgezickt weil das return wie bei dir nicht am ende der funktion steht. mach das retrun mal ans ende.
    Sunshine CMS
    BannerAdManagement
    Borlabs - because we make IT easier
    Formulargenerator [color=red]Neu![/color]
    Herkunftsstatistik [color=red]Neu![/color]

    Kommentar


    • #3
      Dein echo $blubb gibt nochts aus weil $blubb nicht mehr der Rückgabe wert der Funktion is, zumindest wenn dei Funktion nicht beim ersten Aufruf beendet wird
      Beantworte nie Threads mit mehr als 15 followups...
      Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

      Kommentar


      • #4
        ich meine wir hätten schonmal einen fall gehabt, da hat php zumgezickt weil das return wie bei dir nicht am ende der funktion steht. mach das retrun mal ans ende.
        Würde mich eher wundern. Es gibt so viele Möglichkeiten, wo das return vor "Ende" der Funktion(sdefinition) eintreten muss. Dafür ist es schließlich da.

        Kommentar


        • #5
          mich wunderts eher dass das keine endlosschleife ist ..
          mfg,
          [color=#0080c0]Coragon[/color]

          Kommentar


          • #6
            Hm also danke erstmal.

            @Coragon Rivito
            Ne Endlosschleife isses sicher net, weil ja irgendeine Kategorie mal die erste sein muss...

            @Benny-one
            Dass das return am Ende der Funktion stehen muss hab ich auch noch nie gehört, und es hat auch oft schon anders funktioniert...

            @MelloPie
            Wie meinst du das genau? Ich weise doch den Wert den die Funktion zurückgibt der Variablen zu, d.h. die Variable enthält den gleichen Wert.
            Demnach müsste es egal sein, ob ich die Funktion direkt ausgebe, oder $blubb

            Da muss doch irgendwo ein Fehler sein... sonst würd es doch gehen...

            Kommentar


            • #7
              denk halt mal nach Du führst in Deiner Funktion deine Funktion wieder aus... und wo gibst Du dann den Rückgabe wert hin???
              Beantworte nie Threads mit mehr als 15 followups...
              Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

              Kommentar


              • #8
                stimmt... da hast du recht... ich schaus mir nochmal an, und poste die lösung, wenn ichs hinbekomm

                EDIT: Okay, überredet! Danke!

                PHP-Code:
                function get_depth($id,$depth=0) {
                    if(
                $id == "0") return $depth-1;
                    
                $query querydb("SELECT parent_id FROM cb_shop_categories WHERE id = '".$id."'","");
                    
                $depth get_depth($query['parent_id'],$depth+1);
                    return 
                $depth;

                Zuletzt geändert von shihan; 26.12.2004, 02:06.

                Kommentar

                Lädt...
                X