2011-01-27 11 views
3

はのは、私が多薄暗い/ネストされた配列の下に持っているとしましょう:与えられた子鍵から配列のすべての親鍵を見つけるには?

array(
    'World'=>array(
      'Asia'=>array(
       'Japan'=>array(
        'City'=>'Tokyo' 
       ) 
     ) 
    ) 
); 

私は現在、市内のheriarchyにすべての親を見つけることができるようにしたいです。例えば

は、市のために、応答が含む両親の配列でなければなりません:

array(
    'World'=>array(
      'Asia'=>array(
       'Japan' 
     ) 
    ) 
); 

それでは、どのように私は、ネストされた配列にチェーン内のすべての親を見つけるのですか?

答えて

4

再帰はここにあなたの友人です。再帰的に配列をたどり、すべての親を取得する必要があります。 Your problem is discussed here, take a look at this comment.

<?php 

function getParentStack($child, $stack) { 
    foreach ($stack as $k => $v) { 
     if (is_array($v)) { 
      // If the current element of the array is an array, recurse it and capture the return 
      $return = getParentStack($child, $v); 

      // If the return is an array, stack it and return it 
      if (is_array($return)) { 
       return array($k => $return); 
      } 
     } else { 
      // Since we are not on an array, compare directly 
      if ($v == $child) { 
       // And if we match, stack it and return it 
       return array($k => $child); 
      } 
     } 
    } 

    // Return false since there was nothing found 
    return false; 
} 

?> 
+0

これを行う方法の例を教えてください。 –

+0

@Zain、私はこの問題が議論されているリンクを含めて、そこを見てください。 – shamittomar

+0

私は、この機能がこのような方法ではないことに気付きました。指定された子キー値からキーを検索しますが、子キーから親キーを取得します。私が例として書いた上記の配列で、私はアジアの親キーを世界に送りたいのですか?どのように私はそれを取得できますか? –

関連する問題