📅  最后修改于: 2023-12-03 14:43:50.765000             🧑  作者: Mango
在 Laravel 中,集合是一种非常有用的数据类型,可以用于对数组进行各种复杂的操作和处理。本文将介绍 Laravel 集合合并的方法和使用。
合并两个集合可以使用 merge
方法。
$collection1 = collect([1, 2, 3]);
$collection2 = collect([4, 5, 6]);
$merged = $collection1->merge($collection2);
上面的代码将输出以下结果:
Illuminate\Support\Collection Object
(
[items:protected] => Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[4] => 5
[5] => 6
)
)
合并多个集合可以使用 concat
方法。
$collection1 = collect([1, 2, 3]);
$collection2 = collect([4, 5, 6]);
$collection3 = collect([7, 8, 9]);
$merged = $collection1->concat($collection2)->concat($collection3);
上面的代码将输出以下结果:
Illuminate\Support\Collection Object
(
[items:protected] => Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[4] => 5
[5] => 6
[6] => 7
[7] => 8
[8] => 9
)
)
如果需要合并多个集合并去除重复的元素,可以使用 unique
方法。
$collection1 = collect([1, 2, 3]);
$collection2 = collect([2, 3, 4]);
$collection3 = collect([3, 4, 5]);
$merged = $collection1->concat($collection2)->concat($collection3)->unique();
上面的代码将输出以下结果:
Illuminate\Support\Collection Object
(
[items:protected] => Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[6] => 5
)
)
如果需要根据自己的需求定义合并逻辑,可以使用 reduce
方法和匿名函数。
$collection1 = collect([1, 2, 3]);
$collection2 = collect([2, 3, 4]);
$collection3 = collect([3, 4, 5]);
$merged = collect([$collection1, $collection2, $collection3])->reduce(function ($carry, $item) {
return $carry->merge($item);
}, collect());
上面的代码将输出以下结果:
Illuminate\Support\Collection Object
(
[items:protected] => Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 2
[4] => 3
[5] => 4
[6] => 3
[7] => 4
[8] => 5
)
)
上面的例子中,reduce
方法将多个集合合并为一个,并指定初始值为一个空集合,匿名函数返回的是两个集合的合并结果。