Problem - Rekursive Funktion + return

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

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

    Kommentar


    • #17
      Zitat von combie Beitrag anzeigen
      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++; }

      Kommentar


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

        Kommentar


        • #19
          Zitat von combie Beitrag anzeigen
          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++; }

          Kommentar


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

            Kommentar


            • #21
              NICE! Das funktioniert endlich!

              1000 Dank combie!

              Zitat von combie Beitrag anzeigen
              Das $cnt kannst du wohl komplett entsorgen...
              Irgendwie leider nicht! Hatte es grade eben versucht...
              WHILE (!$asleep) { $sheep++; }

              Kommentar

              Lädt...
              X