无需for循环如何给二维数组子项添加department_id以支持批量插入
方案1:使用原生PHP array_walk 原地修改数组
不需要重新赋值,直接对原数组生效:
$departmentId = 1; // 直接遍历修改person数组的每个子元素 array_walk($person, function(&$item) use ($departmentId) { $item['department_id'] = $departmentId; });
方案2:使用原生PHP array_map 返回新数组
如果不想修改原数组,可以用这个方法生成处理后的新数组:
$departmentId = 1; $person = array_map(function($item) use ($departmentId) { $item['department_id'] = $departmentId; return $item; }, $person);
方案3:Laravel 集合处理(推荐,适配你正在使用的Eloquent ORM场景)
Laravel自带的集合类封装了更简洁的写法,代码可读性更高:
$departmentId = 1; $person = collect($person)->map(function($item) use ($departmentId) { return array_merge($item, ['department_id' => $departmentId]); })->all(); // PHP 7.4+ 可以用箭头函数简化成一行 $person = collect($person)->map(fn($item) => $item + ['department_id' => 1])->all();
以上三种方案都不需要手动写for循环处理,处理完的数组就可以直接传给Model::insert()做批量插入。
内容的提问来源于stack exchange,提问作者Akshay Rajeev
相关产品推荐
相关产品推荐

