PHP循环中向Laravel Collection插入多条数据仅最后一条生效如何解决
问题原因
你当前的代码每次循环都会重新实例化一个仅包含当前遍历值的Laravel集合,并直接覆盖$final_lists变量,之前循环生成的内容会被完全清空,所以最终只会保留最后一次循环的内容。
解决方案
需要先在循环外部初始化空集合,循环过程中调用集合的push()方法向已有集合追加元素,不要重复实例化集合覆盖变量:
// 循环外初始化空集合 $final_lists = collect(); foreach ($some_array as $key => $value) { // 向已有集合追加元素 $final_lists->push((object) [ 'customer_id' => $value, 'name' => 'Name ' . ($key + 1) // 可根据实际需求调整name字段的生成规则 ]); }
如果你更习惯先操作普通数组,也可以先把所有项存入普通数组,最后再统一转为集合:
$temp_list = []; foreach ($some_array as $key => $value) { $temp_list[] = (object) [ 'customer_id' => $value, 'name' => 'Name ' . ($key + 1) ]; } $final_lists = collect($temp_list);
最终得到的$final_lists直接序列化为JSON时,就会符合你需要的输出格式。
内容的提问来源于stack exchange,提问作者DragonFire
相关产品推荐
相关产品推荐

