【发布时间】:2015-12-07 16:40:53
【问题描述】:
我得到了以下结构:
Array
(
[0] => Array
(
[id] => 1
[children] => Array
(
[0] => Array
(
[id] => 5
)
[1] => Array
(
[id] => 7
)
[2] => Array
(
[id] => 8
[children] => Array
(
[0] => Array
(
[id] => 10
)
[1] => Array
(
[id] => 4
)
)
)
[3] => Array
(
[id] => 6
)
[4] => Array
(
[id] => 3
)
[5] => Array
(
[id] => 2
)
[6] => Array
(
[id] => 9
)
)
)
[1] => Array
(
[id] => 13
)
)
我想知道的是密钥的根结构。 换句话说。
我们的 ID 号是 10。我想知道根结构(至少。我会这样描述它)
结果应该是:
$result = array(
0 => 1,
1 => 8
);
但我不知道如何实现这一点。也不知道如何开始。 我唯一能想到的就是创建几个包含所有子数组的子数组,然后再次遍历数组并检查 ID 是否可用。但在结构复杂的情况下。就速度而言,这几乎是不可逆转的。
我希望有人知道这个问题的解决方案。
很高兴这篇文章被否决了,因为人们认为它太简单了。但我仍在寻找答案。递归函数对我不起作用。
///########-------------------------------------------------------------
///########-------------------------------------------------------------
///######## FUNCTION TO GET THE PAGE ORDER
///########-------------------------------------------------------------
///########-------------------------------------------------------------
private function GetPageLocation($PageArray, $PreFix = array()){
///######## RETURN THE COLLECTED DATA
foreach($PageArray as $key => $value){
///######## IF THE PAGE HAS BEEN SET
if(isset($value['id']) === true){
echo PHP_EOL.$value['id'];
///######## IF THE ID IS NOT THE CURRENT ID
if($value['id'] != $this->PageID){
///######## ADD THE PREFIX
$PreFix[] = $value['id'];
}
///######## IF THE ID IS THE CURRENT ID
else{
exit('sdd');
///######## HALT THE LOOP
break;
}
}
///######## IF THE VALUE IS AN ARRAY
if(isset($value['children']) === true){
///######## EXECUTE HIMSELF
$PreFix = array_merge($PreFix, $this->GetPageLocation($value, $PreFix));
}
///######## IF THE VALUE IS NO ARRAY
else{
}
}
///########==================================================
///######## RETURN THE PREFIX
///########==================================================
return($PreFix);
///########==================================================
}
【问题讨论】:
-
你应该编写一个搜索它的递归函数。
-
我认为您要查找的词是元素的路径,而不是根结构。
-
7 票否决?这太苛刻了。
-
@Barmar 好吧,它是路径。 7票否决?干什么用的?