2016-06-17 4 views
0

私は再帰関数を使ってビジュアルツリーにPHP配列を書式化しようとしていますが、何らかの理由で動作していないようです。それは最初のレベルしか印刷しません。ここに私のコードです。以下はメニューツリーへのPHP配列

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; 
} 

DBからの私の配列の結果である:私が得る

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

実際の結果は、この(最初のレベルのみ)です:

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

誰もがここで間違っているものを見ていますか?前もって感謝します。

答えて

1

recursiveMenu()への2番目の再帰呼び出しの結果を出力に追加するのを忘れていませんか?私は8行目を次のように変更する必要があると思います:

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

素晴らしいです。それはうまくいった!ありがとう。 – Ravi