PHP 通過一個節點找出所有父節點
阿新 • • 發佈:2019-01-23
如圖,拿到所有給出節點的父節點。
百度搜了半天,都是通過父節點找子節點的。無奈,後來只能自己寫了。遍歷+遞迴,大神們不要鄙視我。。。我資料結構。。。
<?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']); } } }