<?php $regions = [ ['id' => 1, 'name' => '北京市', 'parent_id' => 0], ['id' => 2, 'name' => '天津市', 'parent_id' => 0], ['id' => 3, 'name' => '上海市', 'parent_id' => 0], ['id' => 4, 'name' => '广东省', 'parent_id' => 0], ['id' => 5, 'name' => '广州市', 'parent_id' => 4], ['id' => 6, 'name' => '深圳市', 'parent_id' => 4], ['id' => 7, 'name' => '河源市', 'parent_id' => 4], ['id' => 8, 'name' => '四川省', 'parent_id' => 0], ['id' => 9, 'name' => '长沙市', 'parent_id' => 11], ['id' => 10, 'name' => '武汉市', 'parent_id' => 0], ['id' => 11, 'name' => '湖南省', 'parent_id' => 0], ['id' => 12, 'name' => '成都市', 'parent_id' => 8], ['id' => 13, 'name' => '望城区', 'parent_id' => 9], ['id' => 14, 'name' => '邵阳市', 'parent_id' => 11], ['id' => 15, 'name' => '岳麓区', 'parent_id' => 9], ['id' => 16, 'name' => '洞口县', 'parent_id' => 14], ['id' => 17, 'name' => '岳阳市', 'parent_id' => 11], ['id' => 18, 'name' => '黄桥镇', 'parent_id' => 16], ]; function formatTree($regions, $parent_id = 0, $level = 0, $prefix = '--') { $tree = []; foreach ($regions as $region) { if ($region['parent_id'] == $parent_id) { $region['name'] = str_repeat($prefix, $level) . $region['name']; $region['depth'] = $level+1; $tree[] = $region; $tree = array_merge($tree, formatTree($regions, $region['id'], $level + 1, $prefix)); } } return $tree; } $tree = formatTree($regions); foreach ($tree as $region) { echo $region['depth'].':'.$region['name'] . '<br>'; } ?>