Laravel中如何将嵌套数组内的子数组合并为单个一维数组
问题原因
你之前的array_merge写法失效,核心是多余用array()包裹了$data:$data本身就是待拆分的二维数组,额外套一层数组后,不管是调用call_user_func_array还是用展开运算符,实际传入array_merge的参数只有整个嵌套数组这一个元素,根本没有拆分出内部的子数组,自然得不到合并结果。
可用实现方案
你可以根据项目场景选下面任意一种写法:
- 原生PHP修正写法
去掉多余的数组包裹,直接对$data使用展开运算符即可,加空数组兜底可以避免$data为空时抛出报错:// 通用兼容写法,空数组也能正常返回空结果 $merged = array_merge([], ...$data); - Laravel集合写法(Laravel项目优先推荐)
用Laravel集合自带的collapse()方法即可,不需要考虑PHP版本兼容、空数组报错问题,会自动把第一层的所有子数组合并为单个结构,保留原数据的对象格式:$merged = collect($data)->collapse()->toArray();
以上两种写法处理你提供的示例数据,都能得到你预期的一维结构,和你给出的目标结果完全一致。
内容的提问来源于stack exchange,提问作者Sagar Sheregar
相关产品推荐
相关产品推荐

