以下仅供参考//test.php<?php $arr = [ ["id" => 1, "parentid" => 0, "name" => "春树集团"], ["id" => 2, "parentid" => 0, "name" => "东控科技"], ["id" => 3, "parentid" => 1, "name" => "科研部"], ["id" => 4, "parentid" => 1, "name" => "科研部"], ["id" => 5, "parentid" => 3, "name" => "科研部-3-5"], ["id" => 6, "parentid" => 2, "name" => "666"], ]; //以 parentid 分组 $map = []; foreach ($arr as $v) { $v["children"] = []; $map[$v["parentid"]][] = $v; } //默认根结点是0 //递归处理汇总数据 $res = $map[0]; foreach ($res as &$node) { dfs($node, $map); } var_dump($res); function dfs(&$node, &$map) { if (!isset($map[$node["id"]])) { return; } $node["children"] = $map[$node["id"]]; foreach ($node["children"] as &$child) { dfs($child, $map); } }$ php test.php array(2) { [0]=> array(4) { ["id"]=> int(1) ["parentid"]=> int(0) ["name"]=> string(12) "春树集团" ["children"]=> array(2) { [0]=> array(4) { ["id"]=> int(3) ["parentid"]=> int(1) ["name"]=> string(9) "科研部" ["children"]=> array(1) { [0]=> array(4) { ["id"]=> int(5) ["parentid"]=> int(3) ["name"]=> string(13) "科研部-3-5" ["children"]=> array(0) { } } } } [1]=> array(4) { ["id"]=> int(4) ["parentid"]=> int(1) ["name"]=> string(9) "科研部" ["children"]=> array(0) { } } } } [1]=> &array(4) { ["id"]=> int(2) ["parentid"]=> int(0) ["name"]=> string(12) "东控科技" ["children"]=> array(1) { [0]=> array(4) { ["id"]=> int(6) ["parentid"]=> int(2) ["name"]=> string(3) "666" ["children"]=> array(0) { } } } } }
以下仅供参考
//test.php