Problem - Rekursive Funktion + return

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

  • #16
    Was genau bei meinen Versuchen mit "array_merge()" zurückgegeben wurde weiß ich nicht mehr. Da es nicht geklappt hab, hatte ich den Versuch - genau wie auch bei array_push() - verworfen!
    Das verwerfen der einzig möglichen/schönsten Lösung war bestimmt keine gute Idee.
    Schon witzig, wie ablehnend du dem gegenüber stehst......
    Wir werden alle sterben

    Comment


    • #17
      Originally posted by combie View Post
      Das verwerfen der einzig möglichen/schönsten Lösung war bestimmt keine gute Idee.
      Schon witzig, wie ablehnend du dem gegenüber stehst......
      Nun ja; Beim aktuellen Stand ändert sich leider nichts wenn ich array_merge() anwende! Selbstverständlich hab ich das auch getestet:

      PHP Code:
      function gallist($var$depth=0, &$cnt=0$sub=0$g_out) {
          
      $set 0;
          FOREACH (
      $var as $val) {
              
      $rueck $depth 16;
              
      // Class ändern wenn subgallery
              
      IF (!isset($val["SUB"])) {
                
      $class "normal";
              } ELSE {
                
      $class "bold";
              }
              
      // Array $g_out befüllen
              
      $g_out[$cnt] = array_merge($g_out, array('key' => $cnt'id' => $val[0]["id"], 'name' => $val[0]["name"], 'depth' => $rueck'class' => $class));
              IF (isset(
      $val["SUB"])) {
                  
      $cnt++;
                  
      //$g_out = array();
                  
      $anzahl = isset($val["SUB"]) ? count($val["SUB"]) : 0;
                  
      $g_out[$cnt] = gallist($val["SUB"], $depth+1$cnt$anzahl$g_out);
                  
      // array_push($g_out, gallist($val["SUB"], $depth+1, $cnt, $anzahl));
              
      } ELSE {
                  
      $set 1;
              }
              IF(
      $set === 1) {return $g_out;};
          }
          return 
      $g_out;

      Wie meinste das mit ablehnend? Ich lehne array_merge() nicht ab, aber ich hänge mit der Funktion schon länger als 48h und schön langsam werd ich - und ich denke das ist nachvollziehbar - schon etwas ungeduldig!
      WHILE (!$asleep) { $sheep++; }

      Comment


      • #18
        Es hilft nix array_merge() einfach so in den Quellcode zu tunken.
        Du sollst damit die Rückgabe des rekursiven Aufrufes mit den schon gefundenen verschmelzen.
        Wir werden alle sterben

        Comment


        • #19
          Originally posted by combie View Post
          Es hilft nix array_merge() einfach so in den Quellcode zu tunken.
          Du sollst damit die Rückgabe des rekursiven Aufrufes mit den schon gefundenen verschmelzen.

          Hatte ich gerade versucht! Will aber irgendwie auch nicht!

          PHP Code:
          function gallist($var$depth=0, &$cnt=0$sub=0) {
              
          $g_out = array();
              FOREACH (
          $var as $val) {
                  
          $rueck $depth 16;
                  
          // Class ändern wenn subgallery
                  
          IF (!isset($val["SUB"])) {
                    
          $class "normal";
                  } ELSE {
                    
          $class "bold";
                  }
                  
          // Array $g_out befüllen
                  
          $g_out[$cnt] = array('key' => $cnt'id' => $val[0]["id"], 'name' => $val[0]["name"], 'depth' => $rueck'class' => $class);
                  IF (isset(
          $val["SUB"])) {
                      
          $cnt++;
                      
          $anzahl = isset($val["SUB"]) ? count($val["SUB"]) : 0;
                      
          $g_out[$cnt] = array_merge($g_outgallist($val["SUB"], $depth+1$cnt$anzahl));
                  }
                  
          $cnt++;
              }
              return 
          $g_out;

          WHILE (!$asleep) { $sheep++; }

          Comment


          • #20
            PHP Code:
            $g_out[$cnt] = array_merge($g_outgallist($val["SUB"], $depth+1$cnt$anzahl));
            // ersetzen durch:
            $g_out array_merge($g_outgallist($val["SUB"], $depth+1$cnt$anzahl)); 
            Das $cnt kannst du wohl komplett entsorgen...
            Wir werden alle sterben

            Comment


            • #21
              NICE! Das funktioniert endlich!

              1000 Dank combie!

              Originally posted by combie View Post
              Das $cnt kannst du wohl komplett entsorgen...
              Irgendwie leider nicht! Hatte es grade eben versucht...
              WHILE (!$asleep) { $sheep++; }

              Comment

              Working...
              X