您好,欢迎访问一九零五行业门户网

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

推荐:《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);    }
#数组转树结构#
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数组转树结构以及树结构转数组的详细内容。
其它类似信息

推荐信息