php 数组解析为树型结构

来源:互联网 发布:456时时彩源码 编辑:程序博客网 时间:2024/06/08 13:46

在程序在经常会遇到树形的数据,而在mysql中没有提供递归查询的方法,当然也可以用 mysql 的 自定义函数或者存储过程来实现,不过写方法依赖数据库不方便以后的数据迁移下面。

下面是我用代码实现的方法:

// 测试数据public function test(){    $data = array(        ['id'=>1, 'father_id'=>0],        ['id'=>2, 'father_id'=>1],        ['id'=>3, 'father_id'=>0],        ['id'=>4, 'father_id'=>2],        ['id'=>5, 'father_id'=>3],        ['id'=>6, 'father_id'=>2],    );    echo json_encode($this->_classify_category(0, $data));}/** * 解析树形结构数据 * @param int $father_id 父节点id * @param $data 需要解析的数组 * @return array 树形结构 */private function _classify_category($father_id = 0, $data){    $category = [];    // 深度遍历    foreach ($data as $key=>$row) {        $temp = $row;        $temp['children'] = [];        // 若在数组中找到子节点,删除该节点在数组中的值,减少后面遍历次数        if ($father_id == $temp['father_id']) {            unset($data[$key]);            $temp['children'] = $this->_classify_category($temp['id'], $data);            array_push($category, $temp);        }    }    return $category;}

测试结果:

测试结果

0 0
原创粉丝点击