<?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>';
}
?>