如何合并foreach生成的多个多维数组?
合并嵌套多维数组的解决方案
你遇到的问题是array_merge直接使用无法处理这种外层元素为数组的嵌套结构——array_merge默认合并平级数组项,而你的原始数组外层的每个元素本身就是一个子数组,需要先提取这些子数组再合并。
原始数组结构
$originalArray = [ [ ['id' => '121', 'slug' => 'btm-dc-402'], ['id' => '122', 'slug' => 'btm-dc-403'], ], [ ['id' => '493', 'slug' => 'jog-buah-401'], ['id' => '946', 'slug' => 'dps-buah-356'], ] ];
期望合并结果
[ ['id' => '121', 'slug' => 'btm-dc-402'], ['id' => '122', 'slug' => 'btm-dc-403'], ['id' => '493', 'slug' => 'jog-buah-401'], ['id' => '946', 'slug' => 'dps-buah-356'], ]
解决方法
方法1:使用展开运算符(PHP 5.6+)
利用PHP的展开运算符...,将外层数组的每个子数组作为独立参数传入array_merge:
$mergedArray = array_merge(...$originalArray);
方法2:兼容低版本PHP(<5.6)
如果你的PHP版本低于5.6,使用call_user_func_array传递参数:
$mergedArray = call_user_func_array('array_merge', $originalArray);
两种方法最终都会生成你需要的连续一维数组结果。
内容的提问来源于stack exchange,提问作者Henry
相关产品推荐
相关产品推荐

