php中根据当前节点数据获取根节点数据的方法

前言:

有时候需要进行数据遍历,由当前节点去查询根节点数据,下面介绍一种递归查询方法。

/**
 * 获取当前节点的根节点,无论有多少层,都可以查到根节点
 * @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
}

你可能感兴趣的:(php,php,开发语言,算法,数据结构,逻辑回归)