Laravel中如何在foreach循环中生成符合要求的嵌套数组
问题原因与修复方案
存在的错误
- 没有做子数组打包:你在循环内直接把日期、1、2三个值逐个追加到
$test根数组,每次循环新增3个顶层元素,3次循环后自然得到9个元素的一维扁平数组。 - 条件判断逻辑错误:
if ($number = 1)是赋值操作而非相等判断,执行后会永远返回true,如果是要判断$number是否等于1,应该使用==或===运算符。 - 附加数值不匹配:目标结构中每个子数组的第三个元素是3,你当前代码写的是2。
- 缺少外层
items键封装:目标结构外层是包含items键的关联数组,你没有初始化这层结构。
修正后的代码
// 先初始化外层结构,包含items键 $test = [ 'items' => [] ]; foreach ($Date['date'] as $item) { // 业务判断保留,注意使用相等判断运算符 if ($number === 1) { // 先组装当前循环对应的子数组,再推入items数组中 $test['items'][] = [ $item, 1, 3 ]; } }
执行上述代码后,$test的结构就和你预期的嵌套结构完全一致。
内容的提问来源于stack exchange,提问作者Farshad
相关产品推荐
相关产品推荐

