PHP多维数组遍历问题:如何获取区域名及对应国家首都?
解决数组遍历的问题
我来帮你梳理下代码里的问题,然后给出正确的写法~
首先先明确你的数组结构,用PHP代码写出来是这样的:
$newDatas = [ 'NorthAmerica' => [ ['country' => 'Canada', 'capital' => 'Ottawa'], ['country' => 'USA', 'capital' => 'Washington'] ] ];
你的原代码有两个明显的错误:
- 外层循环里,你想输出区域名
NorthAmerica,但你用了echo $value;——这里$value是区域对应的国家数组,直接输出会显示Array,而区域名其实是$parent变量; - 内层循环你写了
foreach($parent as $values),但$parent是字符串(就是NorthAmerica),不是数组,遍历字符串会导致错误,你应该遍历的是$value(也就是区域下的国家数组集合)。
正确的遍历代码
foreach($newDatas as $regionName => $countries) { // 输出区域名称 echo "区域:{$regionName}<br>"; // 遍历当前区域下的所有国家数据 foreach($countries as $countryItem) { // 输出对应国家的首都 echo "首都:{$countryItem['capital']}<br>"; } }
代码解释
- 外层
foreach:遍历顶层数组,$regionName会拿到NorthAmerica这个区域名,$countries则是该区域下包含所有国家信息的数组; - 内层
foreach:遍历$countries数组,每次循环的$countryItem就是单个国家的关联数组,直接通过$countryItem['capital']就能获取首都值。
运行这段代码后,会输出:
区域:NorthAmerica 首都:Ottawa 首都:Washington
内容的提问来源于stack exchange,提问作者user5878353
相关产品推荐
相关产品推荐

