在 Laravel 的集合中,map() 和 transform() 方法都用于对集合中的每个元素应用一个回调函数来进行转换。它们的主要区别在于返回的结果:
map() 方法将集合中的每个元素都转换为一个新的值,并将这些值组成一个新的集合返回。
transform() 方法也对集合中的每个元素进行转换,但是它会将每个元素替换为转换后的新值,最终返回修改后的原始集合。
换句话说,map() 方法返回一个新的集合,而 transform() 方法则修改原始集合并返回它。
以下是一个使用 map() 和 transform() 的示例:
$collection = collect([1, 2, 3]);
// 使用 map() 方法返回一个新的集合
$mapped = $collection->map(function ($item) {
return $item * 2;
});
$mapped->all(); // [2, 4, 6]
$collection->all(); // [1, 2, 3]
// 使用 transform() 方法修改原始集合
$mapped = $collection->transform(function ($item) {
return $item * 2;
});
$mapped->all(); // [2, 4, 6]
$collection->all(); // [2, 4, 6]
在上面的例子中,map() 方法返回一个新的集合,其中每个元素都被乘以 2。而 transform() 方法则修改了原始集合中的每个元素,使它们都乘以 2,最终返回修改后的原始集合。
结论:
1、 map 不改变本身,只改变返回值
2、transform 改变本身,也改变返回值