Laravel中构建自定义数组:将国家按大洲分组整理
按大洲分组重构国家数组
原始数组结构(从数据库获取的国家与大洲信息):
$originalArray = [ ["country" => "BE", "continent" => "EU"], ["country" => "BG", "continent" => "EU"], // 更多数据... ];
目标数组结构(按大洲分组,每个大洲下包含对应国家列表):
$targetArray = [ [ "continent" => "EU", "countries" => [ ["country" => "BE"], ["country" => "BG"] // 更多国家... ] ] // 更多大洲... ];
实现代码
// 初始化分组数组 $grouped = []; foreach ($originalArray as $item) { $continent = $item['continent']; // 若该大洲未在分组数组中,先初始化结构 if (!isset($grouped[$continent])) { $grouped[$continent] = [ 'continent' => $continent, 'countries' => [] ]; } // 将当前国家添加到对应大洲的列表中 $grouped[$continent]['countries'][] = ['country' => $item['country']]; } // 转换为索引数组,匹配目标结构的格式 $targetArray = array_values($grouped);
代码逻辑说明:
- 用关联数组
$grouped临时存储分组数据,以大洲代码为键,避免重复创建大洲结构 - 遍历原始数组时,直接将国家信息追加到对应大洲的
countries列表 - 最后通过
array_values()把关联数组转为索引数组,完全匹配目标格式
内容的提问来源于stack exchange,提问作者Elisa
相关产品推荐
相关产品推荐

