2012-02-28 18 views
0

の組み合わせの値を印刷いくつかの配列Iは多次元配列の組み合わせがあるが、私は、画面上の正しい値を出力することができない、一、二、三次元アレイ

$parent = array(
    array(
     'function_name' => 'home', 
     'screen_name' => 'Home' 
     ), 

    array(
     'function_name' => 'categories', 
     'screen_name' => 'Categories', 


     array(
      'function_name' => 'post', 
      'screen_name' => 'Post', 
      ) 
     ), 

    array(
     'function_name' => 'pages', 
     'screen_name' => 'Pages', 


     array(
      'function_name' => 'add', 
      'screen_name' => 'Add', 

      array(
       'function_name' => 'manage', 
       'screen_name' => 'Manage' 
       ) 
      ) 
     ) 
); 

それ自身では、一部はサブアレイであり、サブアレイの一部はサブサブアレイです。エラーメッセージ

foreach($parent as $index => $item) 
{ 
    echo 'parent - '.$item['screen_name'].'<br/>'; 

    foreach($item as $child) 
    { 
     echo 'child - '.$child['screen_name'].'<br/>'; 

     foreach($child as $grandchild) 
     { 
      echo 'grandchild - '.$grandchild['screen_name'].'<br/>'; 
     } 
    } 
} 

Warning: Invalid argument supplied for foreach() in -> foreach($child as $grandchild) 

私はこのようなものです探していますその結果、

parent - Home 
parent - Categories 
    child - Post 
parent - Pages 
    child - Add 
    grandchild - Manage 

編集:私は下のこのテストで試してみました

'Home'及び配列:
foreach ($system as $inner_1) { 

    if (is_array($inner_1)) 
    { 

     foreach ($inner_1 as $inner_2) 
     { 

      if (is_array($inner_2)) 
      { 
        foreach ($inner_2 as $inner_3) 
        { 
        var_dump($inner_3['function_name']); 
        } 
      } 
     } 
    } 
} 

が、私は奇妙な結果を得るには、

string 'p' (length=1) // don't know why I get this. 
string 'P' (length=1) // don't know why I get this. 

string 'a' (length=1) // don't know why I get this. 
string 'A' (length=1) // don't know why I get this. 

string 'manage' (length=6) // correct result. 

答えて

0

$parent[1]foreach($item as $child)を実行し、$childは以下の値を取ります。

配列を純粋に結合的に保つのはどうですか?引数を知っforeach ($item['children'] as $child)実行することができます

$parent = array(
    array(
     'function_name' => 'categories', 
     'screen_name' => 'Categories', 
     'children' => array(
      array(
       'function_name' => 'post', 
       'screen_name' => 'Post' 
      ), 
      array(
       'function_name' => 'review', 
       'screen_name' => 'Review', 
       'children' => array(
        ... 
       ) 
      ), 
     ) 
    ) 
); 

この方法では、配列である(あなたが$item['children']が存在し、配列であることを確認する必要があります)。

+0

提案していただきありがとうございますが、親には通常複数の子供がいますが、これは機能しますか? – laukok

+0

@lauthiamkok:私の間違い - 私は自分の投稿を修正しました。 – juanrpozo

+0

編集のおかげで、juanrpozo :-) – laukok