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

猜你喜欢

转载自blog.csdn.net/wuye_lh/article/details/80777548