如图,拿到所有给出节点的父节点。
百度搜了半天,都是通过父节点找子节点的。无奈,后来只能自己写了。遍历+递归,大神们不要鄙视我。。。我数据结构。。。
<?php
//测试数据
$arr = [
['id'=>8,'pid'=>7,'username'=>'test3'],
['id'=>7,'pid'=>6,'username'=>'test3'],
['id'=>6,'pid'=>2,'username'=>'test3'],
['id'=>5,'pid'=>2,'username'=>'test3'],
['id'=>4,'pid'=>1,'username'=>'test3'],
['id'=>3,'pid'=>1,'username'=>'test2'],
['id'=>2,'pid'=>1,'username'=>'test1'],
['id'=>1,'pid'=>0,'username'=>'admin'],
];
//想不到好办法了,用了超全局变量
$GLOBALS['ids'] = [];
getData($arr,1);
function getData($arr,$id)
{
//如果为0表示,没有父级了
if($id == 0 ) return 0;
foreach($arr as $k =>$v) {
if($v['id'] == $id) {
if($v['pid'] != 0 ) $GLOBALS['ids'][] = $v['pid'];
getData($arr,$v['pid']);
}
}
}