需要有关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);
mapeach一样在数组上进行迭代。区别在于each不返回任何内容(因此您需要自己构建新的数组),而map会自动为函数内部的return生成一个新的项目集合。在map之后,您可以使用all以纯数组形式返回结果。

关于php - Laravel集合.each()+ array_push,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42773475/

10-13 04:35