如何将PHP关联数组foreach统计代码改写为保留键的array_map实现
解决方案
你初步写的$stats = array_map('count', $countries);本身就已经满足保留原数组键的需求:当array_map仅传入一个待处理数组时,默认会保留原数组的所有键(包括字符串关联键和数字索引键),返回的$stats和你原来foreach写法得到的结果完全一致。
如果需要显式保证键值对应关系,避免特殊场景下的逻辑偏差,可以结合array_keys和array_combine实现,逻辑更透明:
$stats = array_combine( array_keys($countries), array_map('count', $countries) );
这种写法会先提取$countries的所有原始键,再把array_map处理得到的计数结果和原始键一一对应组装成新数组,完全匹配你原foreach逻辑的效果。
如果后续你需要在计数的同时加入和键相关的处理逻辑,可以扩展回调函数的写法:
$stats = array_combine( array_keys($countries), array_map(function($country, $key) { // 此处可加入需要用到键$key的额外逻辑 return count($country); }, $countries, array_keys($countries)) );
内容的提问来源于stack exchange,提问作者Faye D.
相关产品推荐
相关产品推荐

