📜  laravel 集合分区 - PHP (1)

📅  最后修改于: 2023-12-03 15:02:38.992000             🧑  作者: Mango

Laravel 集合分区

在 Laravel 中,集合是一组有序的值,它们可以是数组、对象、数据库查询结果等等。集合提供了许多实用的方法,用于对其中的元素进行筛选、排序、映射、转换等等操作。

其中,集合的 partition 方法可以将集合分成满足条件的和不满足条件的两个子集合。该方法的函数签名如下:

/**
 * Partition the collection into two collections using the given boolean test.
 *
 * @param  callable|mixed  $callback
 * @return array
 */
public function partition($callback);

其中,参数 $callback 可以是一个回调函数,也可以是一个可以转换为真值或假值的值。如果参数是回调函数,则该函数会对集合中的每一个元素进行调用,返回值为真的元素将被放入结果集的第一个子集合中,返回值为假的元素将被放入结果集的第二个子集合中。如果参数是一个可以转换为真值或假值的值,则集合中的每一个元素都会被与该值进行比较,结果集的第一个子集合将包含所有等于该值的元素,第二个子集合将包含所有不等于该值的元素。

下面是一个使用 partition 方法的例子:

use Illuminate\Support\Collection;

$collection = Collection::make([
    ['name' => 'John', 'age' => 31],
    ['name' => 'Jane', 'age' => 25],
    ['name' => 'Doe', 'age' => 40],
]);

list($young, $old) = $collection->partition(function ($item) {
    return $item['age'] < 30;
});

$young->all(); // [['name' => 'Jane', 'age' => 25]]

$old->all(); // [['name' => 'John', 'age' => 31], ['name' => 'Doe', 'age' => 40]]

在上面的例子中,我们将一个包含三个元素的集合根据成员的年龄是否小于 30 来进行分区。最终,我们得到了一个年龄小于 30 的子集合和一个年龄大于等于 30 的子集合。

需要注意的是,partition 方法返回的是一个数组,该数组包含两个子集合。如果你只需要其中的一个子集合,可以使用 PHP 的 list 函数将其赋值到变量中。

以上就是本文介绍的 Laravel 集合分区的内容。使用 partition 方法可以帮助我们在实际开发中更加方便地对集合进行操作。