从多维php数组递归获取路径

时间:2014-03-24 15:29:29

标签: php recursion multidimensional-array

我有阵列:

$adm_menu_old = array (
    array( 
        'id' => 1,
        'name' => 'Test1',
    ), 
    array( 
        'id' => 3,
        'name' => 'Test3',
        'childrens' => array(
            array(
                'id' => 31,
                'name' => 'Test31',
            ),
            array(
                'id' => 32,
                'name' => 'Test32',
                'childrens' => array(
                     array(
                        'id' => 321,
                        'name' => 'Test321',
                     ),
            ),
        )
    ), 
    array( 
        'id' => 4,
        'name' => 'Test4',
    ), 
);

说我知道id值。 我需要得到这个id的所有父母的路径。 例如,我需要获取此元素的路径:id = 321 我需要获取具有键名值的数组:

array('Test3','Test32','Test321')

应该看起来像递归函数?

1 个答案:

答案 0 :(得分:0)

尝试此功能:

function getNames($id, $arr) {
  $result = array();
    foreach($arr as $key => $val) {
      if(is_array($val)) {
        if($val["id"] == $id) {
          $result[] = $val["name"];
        } elseif(!empty($val["childrens"]) && is_array($val["childrens"])) {
          $sub_res = getNames($id, $val["childrens"]);
          if(count($sub_res) > 0) {
          $result[] = $val["name"];
          $result = array_merge($result, $sub_res);
        }
      }
    }
  }
  return $result;
}