我有一个看起来像这样的数组:
$arr = array(
array(
'name' => 'n1',
'id' => 0,
'children' => array(
array(
'name' => 'n2',
'id' => 1,
'children' => array(
array(
'name' => 'n3',
'id' => 2,
'children' => array(),
),
array(
'name' => 'n4',
'id' => 3,
'children' => array(),
),
),
),
array(
'name' => 'n17',
'id' => 4,
'children' => array(),
),
),
),
);
但规模更大。
我想写一个php递归函数,它接收搜索到的元素的id作为参数,并返回它经过的名称,例如,对于id == 4,结果应为:
array('n1','n17');
答案 0 :(得分:0)
function test($arr, $v, &$x){
if($x==null)$x=array();
foreach ($arr as $sub){
if($sub['id']==$v){
array_push($x,$sub['name']);
return true;
}
if (test($sub['children'],$v,$x)){
array_unshift($x,$sub['name']);
return true;
}
}
}
test($myArr,4,$result);
print_r($result);