在PHP中,查找某个节点的所有无限父级节点
时间: 2024-03-12 15:43:49 浏览: 20
在PHP中,可以通过递归的方式来查找某个节点的所有无限父级节点,可以使用以下代码:
```
function findAllParents($arr, $id, &$parents = []) {
foreach ($arr as $item) {
if ($item['id'] == $id) {
if ($item['parent_id']) {
$parents[] = $item['parent_id'];
findAllParents($arr, $item['parent_id'], $parents);
}
break;
}
}
return $parents;
}
```
其中,$arr是存储所有节点的数组,$id是要查找父级节点的节点的ID,$parents是一个引用变量,用于存储所有父级节点的ID。这个函数会遍历整个数组,找到对应ID的节点,如果该节点有父级节点,会将其父级节点的ID加入$parents数组中,并递归查找其父级节点的父级节点,直到没有父级节点为止。最后返回所有父级节点的ID数组$parents。
使用方法:
```
$arr = [
['id' => 1, 'parent_id' => null],
['id' => 2, 'parent_id' => 1],
['id' => 3, 'parent_id' => 2],
['id' => 4, 'parent_id' => 3],
['id' => 5, 'parent_id' => 4],
];
$parents = findAllParents($arr, 5);
print_r($parents);
```
输出结果为:
```
Array
(
[0] => 4
[1] => 3
[2] => 2
[3] => 1
)
```
表示节点5的父级节点是节点4,节点4的父级节点是节点3,以此类推,一直到根节点1。