• 技术文章 >后端开发 >php教程

    PHP数组转树结构以及树结构转数组

    藏色散人藏色散人2021-02-24 09:00:59转载456

    推荐:《PHP视频教程

    public function index()
        {
            $data = [
                [
                    'id'=>1,
                    'parent_id' => 0,
                    'name' => '第一个'
                ],
    
                [
                    'id'=>2,
                    'parent_id' => 0,
                    'name' => '第二个'
                ],
    
                [
                    'id'=>3,
                    'parent_id' => 1,
                    'name' => '第三个'
                ],
    
            ];
            $r = $this->list_to_tree($data);
            dump($r);
        }

    Laravel

    #数组转树结构#

    function list_to_tree($list, $root = 0, $pk = 'id', $pid = 'parent_id', $child = 'children'){
        // 创建Tree
        $tree = array();
        if (is_array($list)) {
            // 创建基于主键的数组引用
            $refer = array();
            foreach ($list as $key => $data) {
                $refer[$data[$pk]] = &$list[$key];
            }
            foreach ($list as $key => $data) {
                // 判断是否存在parent
                $parentId = 0;
                if (isset($data[$pid])) {
                    $parentId = $data[$pid];
                }
                if ((string)$root == $parentId) {
                    $tree[] = &$list[$key];
                } else {
                    if (isset($refer[$parentId])) {
                        $parent = &$refer[$parentId];
                        $parent[$child][] = &$list[$key];
                    }
                }
            }
        }
        return $tree;}

    #树结构转数组#

    function tree_to_list($tree = [], $children = 'children'){
        if (empty($tree) || !is_array($tree)) {
            return $tree;
        }
        $arrRes = [];
        foreach ($tree as $k => $v) {
            $arrTmp = $v;
            unset($arrTmp[$children]);
            $arrRes[] = $arrTmp;
            if (!empty($v[$children])) {
                $arrTmp = tree_to_list($v[$children]);
                $arrRes = array_merge($arrRes, $arrTmp);
            }
        }
        return $arrRes;}

    以上就是PHP数组转树结构以及树结构转数组的详细内容,更多请关注php中文网其它相关文章!

    本文转载于:learnku,如有侵犯,请联系a@php.cn删除
    专题推荐:PHP
    上一篇:带你认识PHP运行模式 下一篇:浅谈win10下安装php seaslog扩展的方法
    第15期线上培训班

    相关文章推荐

    • 总结PHP 7.x 各个版本的新特性• php怎么计算相差几天• php里面 ==什么意思• php 怎么设置北京时间• php中类和对象的区别是什么

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网