Laravel中如何给已有数组的每个子项新增字段且不覆盖原有内容
问题原因
你之前的写法存在两处错误:
array_push函数的返回值为操作后数组的元素总个数,而非修改后的数组本身,因此你赋值给$dat的结果就是数字3。- 该写法的作用是向原数组末尾追加一个仅包含
points字段的独立子元素,并不是为每个已有的子元素新增points字段。
实现方案
方案1:原生PHP实现
遍历引用赋值
foreach ($response as &$item) { $item['points'] = 3; } // 操作完后销毁引用变量,避免后续逻辑出现意外赋值 unset($item); return response()->json(['data' => $response], 200);
array_map 处理
$processedData = array_map(function ($item) { $item['points'] = 3; return $item; }, $response); return response()->json(['data' => $processedData], 200);
方案2:Laravel 集合实现(更推荐)
Laravel 自带的集合类提供了更简洁的数组操作方法,代码可读性更高:
$processedData = collect($response)->map(function ($item) { $item['points'] = 3; return $item; }); return response()->json(['data' => $processedData], 200);
内容的提问来源于stack exchange,提问作者user17189691
相关产品推荐
相关产品推荐

