本文介绍如何在 laravel 中不使用显式循环,高效提取多层嵌套结构(如 `main_array → data_array`)中所有子数组元素,并合并为单一扁平数组,核心依赖 `collect()`、`pluck()` 和 `flatten(1)` 链式调用。
在处理嵌套 JSON 或关联数组时,常需从类似 main_array 的数组中批量提取每个子项内 data_array 的全部内容,并合并为一个统一的一维数组。传统 foreach + array_merge 方式虽可行,但代码冗长且可读性弱。Laravel 的集合(Collection)提供了更优雅、函数式、无副作用的替代方案。
以下是一段简洁高效的实现:
$flattenedData = collect($inputs['main_array'])
->pluck('data_array') // 提取每个元素的 'data_array' 值,得到二维数组:
[ [...], [...], ... ]
->flatten(1); // 深度为 1 的扁平化,展开一层嵌套,得到目标一维数组✅ 关键点说明:
⚠️ 注意事项:
最终结果与预期完全一致:一个包含全部 data_array 内部对象的纯一维集合,可直接用于后续 map()、filter() 或 json_encode() 输出。