在这里遇到问题,也许有人可以帮助我。几个小时的搜索无法找到解决方案,所以我的机智已经结束了。
我有一个数组,
$array = array(
array('id' => 1, 'parent_id' => 0, 'name' => 'Main'),
array('id' => 2, 'parent_id' => 0, 'name' => 'Something'),
array('id' => 3, 'parent_id' => 1, 'name' => 'Child of Main'),
array('id' => 4, 'parent_id' => 3, 'name' => 'Child of Child of Main'),
...
);
我想要一个函数,它将为我提供给定节点的父节点的所有ID,即
$ids = getIDs(4);
将返回{3,1}
的数组有什么建议吗?提前谢谢。
答案 0 :(得分:1)
是否可以制作这样的结构?
$array = array(
1=>array('id' => 1, 'parent_id' => 0, 'name' => 'Main'),
2=>array('id' => 2, 'parent_id' => 0, 'name' => 'Something'),
3=>array('id' => 3, 'parent_id' => 1, 'name' => 'Child of Main'),
4=>array('id' => 4, 'parent_id' => 3, 'name' => 'Child of Child of Main'),
...
);
在数组
中有或没有'id'这个应该适用于这个结构
function getIds($array,$x){
if(!$array[$x]['parent_id'])
return array();
else
return array_merge(array($array[$x]['parent_id']),getIds($array,$array[$x]['parent_id']));
}
答案 1 :(得分:1)
我做了类似于RiaD的东西(但我自己)。它适用于您已有的结构。
<?php
$array = array(
array('id' => 1, 'parent_id' => 0, 'name' => 'Main'),
array('id' => 2, 'parent_id' => 0, 'name' => 'Something'),
array('id' => 3, 'parent_id' => 1, 'name' => 'Child of Main'),
array('id' => 4, 'parent_id' => 3, 'name' => 'Child of Child of Main'),
);
$parents = array();
function getIDs($id){
global $array, $parents;
$tmp = $array[$id-1]['parent_id'];
if($tmp){
array_push($parents, $tmp);
getIDs($tmp);
}
}
getIDs(4);
var_dump($parents);
?>
答案 2 :(得分:-1)
您可以尝试foreach 循环或使用array_count_values