The*_*Vic 4 php laravel laravel-collection
我声明了一个collect()数据类型的变量。我想迭代它,并更新每行上的特定列。
\n示例代码:
\n $a = collect([\n [\'one\' => 1, \'two\' => 2],\n [\'one\' => 3, \'two\' => 4],\n [\'one\' => 5, \'two\' => 6]\n ]);\n\n foreach ($a as $b) {\n $b[\'one\'] = 0;\n }\n\n dd($a);\nRun Code Online (Sandbox Code Playgroud)\n我不明白,为什么结果是这样的:
\n\nCollection {#510 \xe2\x96\xbc\n #items: array:3 [\xe2\x96\xbc\n 0 => array:2 [\xe2\x96\xbc\n "one" => 1\n "two" => 2\n ]\n 1 => array:2 [\xe2\x96\xbc\n "one" => 3\n "two" => 4\n ]\n 2 => array:2 [\xe2\x96\xbc\n "one" => 5\n "two" => 6\n ]\n ]\n}\nRun Code Online (Sandbox Code Playgroud)\n我期望每行的结果是“one”=> 0。
\n您没有修改原始数组,没有地方可以将修改后的项目存储回数组。为此,最好map在集合本身上使用该函数。
$a = collect([['one' => 1, 'two' => 2], ['one' => 3, 'two' => 4], ['one' => 5, 'two' => 6]]);
$a = $a->map(function($item) {
$item['one'] = 0;
return $item;
});
Run Code Online (Sandbox Code Playgroud)
对于每种方式:
foreach ($a as $key => $b) {
$b['one'] = 0;
$a[$key] = $b; // override the original item.
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5488 次 |
| 最近记录: |