如何合并数组一级键与二级值并移除关联键,生成目标索引数组?
解决PHP数组格式转换问题:合并一级键与二级值并移除关联键
嘿,这个需求很常见,用PHP的几个数组操作函数就能轻松实现,我给你两种实用的方案:
方案一:foreach循环(直观易懂,适合新手)
这种方法逻辑清晰,一步步处理每个元素,容易理解和调试:
// 你的原始关联数组 $originalArray = [ '2018-03-12' => [ 'United States' => 4, 'Australia' => 15, 'United Kingdom' => 0, 'New Zealand' => 0 ], '2018-03-13' => [ 'United States' => 0, 'Australia' => 8, 'United Kingdom' => 2, 'New Zealand' => 0 ] ]; $result = []; // 遍历原始数组的每个日期键和对应的国家数据 foreach ($originalArray as $date => $countryValues) { // 1. 用array_values把二级关联数组转成索引数组(只保留数值) // 2. 把日期作为第一个元素,和数值数组合并后加入结果数组 $result[] = array_merge([$date], array_values($countryValues)); } // 输出转换后的数组 print_r($result);
方案二:array_map函数(简洁高效)
如果喜欢更简洁的写法,可以用array_map配合array_keys来实现,核心逻辑和方案一一致,但代码更紧凑:
$originalArray = [ '2018-03-12' => [ 'United States' => 4, 'Australia' => 15, 'United Kingdom' => 0, 'New Zealand' => 0 ], '2018-03-13' => [ 'United States' => 0, 'Australia' => 8, 'United Kingdom' => 2, 'New Zealand' => 0 ] ]; // 用array_map同时遍历日期键和对应的数据 $result = array_map( function($date, $countryValues) { return array_merge([$date], array_values($countryValues)); }, array_keys($originalArray), // 获取所有日期键 $originalArray // 获取每个日期对应的国家数据 ); print_r($result);
最终效果
两种方案都会输出你想要的格式:
Array ( [0] => Array ( [0] => 2018-03-12 [1] => 4 [2] => 15 [3] => 0 [4] => 0 ) [1] => Array ( [0] => 2018-03-13 [1] => 0 [2] => 8 [3] => 2 [4] => 0 ) )
内容的提问来源于stack exchange,提问作者wakidiisme
相关产品推荐
相关产品推荐

