以下是一个简单的 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 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录