📜  laravel 集合合并 - PHP (1)

📅  最后修改于: 2023-12-03 14:43:50.765000             🧑  作者: Mango

Laravel 集合合并 - PHP

在 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 方法将多个集合合并为一个,并指定初始值为一个空集合,匿名函数返回的是两个集合的合并结果。