需要有关laravel .each()方法中的array_push的帮助。我无法在此代码上获得容器数组:
$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);
基本上,上面的代码我想对.each()中的数据进行迭代,然后将其插入数组容器并按批插入。
注意:当我使用foreach时不会有问题,但是我需要使用.each()代替foreach。
谢谢
最佳答案
使用 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);
map
与each
一样在数组上进行迭代。区别在于each
不返回任何内容(因此您需要自己构建新的数组),而map
会自动为函数内部的return
生成一个新的项目集合。在map
之后,您可以使用all
以纯数组形式返回结果。关于php - Laravel集合.each()+ array_push,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42773475/