Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 返回新集合而不修改原始集合_Php_Laravel 5_Collections_Eloquent - Fatal编程技术网

Php 返回新集合而不修改原始集合

Php 返回新集合而不修改原始集合,php,laravel-5,collections,eloquent,Php,Laravel 5,Collections,Eloquent,我有一个Laravel集合,我想将它的一个属性值修改为负整数。为此,我使用了collectionmap方法,但它也修改了原始集合 我的代码: $modified_revenue_data = $revenue_data->map(function ($item) { if ($item->is_claw_back == 1 && $item->claw_back_date != null) { return $item->reven

我有一个Laravel集合,我想将它的一个属性值修改为负整数。为此,我使用了collection
map
方法,但它也修改了原始集合

我的代码:

$modified_revenue_data = $revenue_data->map(function ($item) {
    if ($item->is_claw_back == 1 && $item->claw_back_date != null) {
        return $item->revenue = $item->revenue * -1;
    }

    return $item;
});
我想将新集合存储到
$modified\u revenue\u data
中,但
$revenue\u data
也已修改


不修改原始集合的正确方法是什么?

不应更新原始集合。我已经运行了一个小测试,可以确认这是
map()
方法的行为:

$a = collect([1, 2, 3, 4, 5]);

$b = $a->map(function ($el) {
     return $el * 2; 
});

dd($b);
该行为也在以下文件中说明:

地图()

与大多数其他收集方法一样,map返回一个新的收集 实例它不会修改调用它的集合。如果 要转换原始集合,请使用
transform()
方法


这是一个一维集合。我在多维集合中遇到问题,我只想更改其中一个属性。@FahadShaikh应该是相同的。映射的结果应该存储在新创建的集合中,而不是更改前一个。@Dancantr我不是OP,是Fahad Shaikh。@KennyHorna哦,对不起,我的错@肯尼霍纳:你的收藏没有被修改。我不知道为什么是我的?
=> Illuminate\Support\Collection {#3726
     all: [
       2,
       4,
       6,
       8,
       10,
     ],
   }
dd($a);
=> Illuminate\Support\Collection {#3743
     all: [
       1,
       2,
       3,
       4,
       5,
     ],
   }