如何将嵌套Array内层单元素数组的键值对合并至外层?
解决PHP嵌套数组合并问题
你要处理的是把data字段下的多个单元素子数组合并成一个统一的关联数组,这里有几种实用的实现方式,覆盖不同场景需求:
方法一:foreach循环(直观易上手)
这是最基础的写法,逻辑清晰,适合新手理解整个合并过程:
// 你的原始数组 $originalArray = [ 'data' => [ ['degree_level' => "Bachelor's"], ['field_of_study' => 'Science'], ['grade_point' => 3], ['criteria' => 'desired'] ] ]; // 初始化目标结构 $mergedArray = ['data' => []]; // 遍历每个子数组,逐个合并到目标数组 foreach ($originalArray['data'] as $item) { $mergedArray['data'] = array_merge($mergedArray['data'], $item); } // 查看结果 print_r($mergedArray);
方法二:array_reduce函数(函数式风格)
如果偏好简洁的函数式写法,可以用array_reduce一行完成合并逻辑:
$mergedArray = [ 'data' => array_reduce( $originalArray['data'], function ($carry, $item) { return array_merge($carry, $item); }, [] // 初始值设为空数组 ) ]; print_r($mergedArray);
方法三:展开运算符+array_merge(最简洁)
PHP 5.6及以上版本支持展开运算符(...),可以把数组元素直接展开作为array_merge的参数,写法非常精简:
$mergedArray = [ 'data' => array_merge(...$originalArray['data']) ]; print_r($mergedArray);
小提醒
- 如果子数组存在重复键名,后面的子数组键值会覆盖前面的(这是
array_merge的默认特性),如果你的业务需要保留所有重复键,得额外添加处理逻辑。 - 展开运算符的方法要求PHP版本≥5.6,若你的运行环境版本较低,建议选用前两种方法。
内容的提问来源于stack exchange,提问作者Rupesh Ranjan
相关产品推荐
相关产品推荐

