PHP 城市递归代码示例 - 二维数组数据结构
以下是一个简单的 PHP 城市递归代码示例,其中包含了一个二维数组,每个城市都有一个父 ID:
<?php
// 城市数据数组
$cities = array(
array('id' => 1, 'name' => '北京', 'parent_id' => 0),
array('id' => 2, 'name' => '上海', 'parent_id' => 0),
array('id' => 3, 'name' => '广州', 'parent_id' => 0),
array('id' => 4, 'name' => '深圳', 'parent_id' => 0),
array('id' => 5, 'name' => '朝阳区', 'parent_id' => 1),
array('id' => 6, 'name' => '海淀区', 'parent_id' => 1),
array('id' => 7, 'name' => '浦东新区', 'parent_id' => 2),
array('id' => 8, 'name' => '徐汇区', 'parent_id' => 2),
array('id' => 9, 'name' => '天河区', 'parent_id' => 3),
array('id' => 10, 'name' => '越秀区', 'parent_id' => 3),
array('id' => 11, 'name' => '南山区', 'parent_id' => 4),
array('id' => 12, 'name' => '福田区', 'parent_id' => 4),
array('id' => 13, 'name' => '望京', 'parent_id' => 5),
array('id' => 14, 'name' => '中关村', 'parent_id' => 6),
array('id' => 15, 'name' => '陆家嘴', 'parent_id' => 7),
array('id' => 16, 'name' => '淮海中路', 'parent_id' => 8),
array('id' => 17, 'name' => '珠江新城', 'parent_id' => 9),
array('id' => 18, 'name' => '北京南站', 'parent_id' => 13),
array('id' => 19, 'name' => '北京西站', 'parent_id' => 14),
);
// 递归获取子城市
function getChildCities($cities, $parentId, $level = 0) {
$result = array();
foreach ($cities as $city) {
if ($city['parent_id'] == $parentId) {
$city['level'] = $level;
$result[] = $city;
$children = getChildCities($cities, $city['id'], $level + 1);
$result = array_merge($result, $children);
}
}
return $result;
}
// 获取所有城市
$allCities = getChildCities($cities, 0);
// 打印所有城市
foreach ($allCities as $city) {
echo str_repeat('-', $city['level']) . $city['name'] . "\n";
}
?>
以上代码将输出以下结果:
北京
-朝阳区
--望京
--北京南站
-海淀区
--中关村
上海
-浦东新区
--陆家嘴
-徐汇区
--淮海中路
广州
-天河区
--珠江新城
-越秀区
深圳
-南山区
--福田区
原文地址: https://www.cveoy.top/t/topic/o4YX 著作权归作者所有。请勿转载和采集!