在laravel上需要关于array_push里面的.each()方法的帮助.我无法在此代码上获取容器数组:
$imagesData = array();
collect($data['images'])->each(function($v, $k) use($imagesData){
$v['created_at'] = date('Y-m-d H:i:s');
$v['updated_at'] = date('Y-m-d H:i:s');
$v['image_id'] = $v['image_id'];
$v['settings'] = json_encode($v['settings']);
array_push($imagesData, $v);
});
$result = Images::insert($imagesData, true);
Run Code Online (Sandbox Code Playgroud)
基本上,上面的代码我想迭代.each()中的数据,然后将其推送到数组容器并批量插入.注意:当我使用foreach时没有问题,但我需要使用.each()而不是foreach.
谢谢
man*_*niL 14
因为您想要更改原始内容$imageData,所以需要引用此变量而不是仅复制它的值.这是通过使用&符来完成的&.
collect($data['images'])->each(function($v, $k) use(&$imagesData){
.....
使用该Collection::map方法是一种更易读的方式来做同样的事情:
$imagesData = collect($data['images'])
->map(function($item) {
$item['created_at'] = date('Y-m-d H:i:s');
$item['updated_at'] = date('Y-m-d H:i:s');
$item['image_id'] = $item['image_id'];
$item['settings'] = json_encode($item['settings']);
return $item;
})
->all();
$result = Images::insert($imagesData, true);
Run Code Online (Sandbox Code Playgroud)
map以与数据相同的方式迭代数组each.区别在于each不返回任何内容(因此您需要自己构建新数组),同时map自动构建return函数内部项目的新集合.之后map,您将使用all将结果作为普通数组返回.
| 归档时间: |
|
| 查看次数: |
7997 次 |
| 最近记录: |