前言:
有时候需要进行数据遍历,由当前节点去查询根节点数据,下面介绍一种递归查询方法。
/**
* 获取当前节点的根节点,无论有多少层,都可以查到根节点
* @param $array 分类表中的所有的分类数据
* @param $id 当前所要查询的id
* @return array
*/
function getRootId($array, $id)
{
//定义一个静态的变量数组
static $data = array();
foreach ($array as $value) {
if ($value['id'] == $id) {
if ($value['pid'] == 0) {
$data = $value;
}
if ($value['pid'] > 0) {
getRootId($array, $value['pid']);
}
}
}
return $data;
}
例如:
$arr = [
[
'id' => 1,
'name' => '河南省',
'pid' => 0,
],
[
'id' => 2,
'name' => '郑州市',
'pid' => 1,
],
[
'id' => 3,
'name' => '金水区',
'pid' => 2,
],
[
'id' => 4,
'name' => '龙子湖',
'pid' => 3,
],
];
return getRootId($arr, 4);
return getRootId($arr, 3);
return getRootId($arr, 2);
return getRootId($arr, 1);
返回结果:
{
"id": 1,
"name": "河南省",
"pid": 0
}