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


Recursive get path from multidimensional php 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')

应该如何看起来像递归函数?

试试这个函数:

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