1. 程式人生 > >PHP 通過一個節點找出所有父節點

PHP 通過一個節點找出所有父節點

如圖,拿到所有給出節點的父節點。


百度搜了半天,都是通過父節點找子節點的。無奈,後來只能自己寫了。遍歷+遞迴,大神們不要鄙視我。。。我資料結構。。。

<?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']);
			}
		}
		
	}