2016-06-17 5 views
0

Ich versuche, ein PHP-Array zu einem visuellen Baum durch eine rekursive Funktion zu formatieren, aber aus irgendeinem Grund scheint es nicht zu funktionieren. Es druckt nur die erste Ebene. Hier ist mein Code.PHP Array zu Menübaum

function recursiveMenu($arr){ 
    $maketree = ""; 
    if(is_array($arr)){ 
     foreach($arr as $key => $val){ 
      if(is_array($val)){ 
       $maketree .= "<div class='expcol jexpand'><a>[-]</a>".$key."</div>" 
          . "<div class='section jsection'>"; 
       recursiveMenu($val); 
      }else{ 
       $maketree .= "<div>".TB.TB." <a href='index.php?action=". $val . "' >" 
          . "<div class='menuitem'>" . $val . "</div>" 
          . "</a></div>"; 
      } 
      $maketree .="</div>"; 
     } 
    } 
    return $maketree; 
} 

function makeMenu($srch) { 
    $makemenu = "<div>"; 
    $makemenu .= recursiveMenu($srch); 
    $makemenu .= "</div>"; // </a> 
    return $makemenu; 
} 

Unten ist mein Array von DB führen:

$srch = Array(
    [Asia] => Array(
      [South] => Array(
        [India] => Array(
          [0] => Mumbai 
          [1] => New Delhi 
          [2] => Chennai 
         ) 
       ) 
     ) 

    [Europe] => Array(
      [West] => Array(
        [Spain] => Array(
          [0] => Madrid 
         ) 
       ) 

      [North] => Array(
        [Denmark] => Array(
          [0] => Copenhagen 
         ) 
       ) 
     ) 

    [Americas] => Array(
      [South] => Array(
        [Brazil] => Array(
          [0] => Brasilia 
         ) 
       ) 

      [North] => Array(
        [USA] => Array(
          [0] => Los Angeles 
          [1] => Atlanta 
          [2] => Boston 
          [3] => Houston 
         ) 
       ) 

      [Central] => Array(
        [Mexico] => Array(
          [0] => Cancun 
          [1] => Mexico city 
         ) 
       ) 

     ) 

    [Africa] => Array(
      [South] => Array(
        [South Africa] => Array(
          [0] => Cape Town 
          [1] => Johannesburg 
         ) 
       ) 
     ) 
) 

Das I-Ist-Ergebnis bekommen, ist dies (nur die erste Ebene):

[-]Asia 
[-]Europe 
[-]Americas 
[-]Africa 

Sieht jemand, was hier los? Danke im Voraus.

Antwort

1

Vergessen Sie nicht, die Ergebnisse des zweiten rekursiven Aufrufs an rekursiveMenu() an die Ausgabe anzuhängen. Ich denke, dass Sie Linie 8 zu ändern müssen:

$maketree .= recursiveMenu($val); 
+0

Ehrfürchtig. Das hat funktioniert! Vielen Dank. – Ravi