Laravel 中的集合

88 阅读1分钟

集合是一种健壮的数据结构,使开发人员能够更轻松、更高效地处理数组数据。它提供了一种面向对象的方法来处理数组,并提供了一系列可用于操作、筛选、排序和转换数据的方法。

下面是如何在 Laravel 中创建集合的示例:

$collection = collect(['apple', 'orange', 'banana', 'kiwi']);

在这个例子中,我们创建了一个水果集合。现在我们可以使用各种方法来处理这个集合。例如,我们可以使用filter方法过滤掉所有以字母a开头的水果:

$filtered = $collection->filter(function ($value, $key) {
    return Str::startsWith($value, 'a');
});
​
// 输出: ['apple']

在本例中,我们使用 filter 方法创建了一个新的集合,该集合只包含水果 apple,这是唯一以字母 a 开头的水果。

我们还可以使用排序方法按字母顺序对集合进行排序:

$sorted = $collection->sort();
​
// 输出: ['apple', 'banana', 'kiwi', 'orange']

在这个例子中,我们使用了 sort 方法来创建一个新的集合,其中包含按字母顺序排序的水果。

Laravel 中集合的主要好处之一是能够将方法链接在一起,允许开发人员在一行代码中对集合执行多个操作。以下是我们如何创建用户集合并按年龄筛选用户,然后按名称排序的示例:

$users = collect([
    ['name' => 'John', 'age' => 30],
    ['name' => 'Jane', 'age' => 25],
    ['name' => 'Bob', 'age' => 35],
    ['name' => 'Sarah', 'age' => 28]
]);
​
$filteredUsers = $users
    ->where('age', '>', 25)
    ->sortBy('name');
​
// 输出: [['name' => 'Jane', 'age' => 25], ['name' => 'John', 'age' => 30], ['name' => 'Sarah', 'age' => 28], ['name' => 'Bob', 'age' => 35]]

在本例中,我们创建了一个包含用户姓名和年龄的用户集合。然后,我们使用 where 方法来筛选集合,只返回25岁以上的用户。最后,我们使用 sortBy 方法按名称对过滤后的集合进行排序。

Laravel 中另一个有用的集合方法是 map 方法。此方法可以让开发人员通过对集合中的每个项目使用回调函数来转换集合中的值。下面是一个示例,说明我们如何使用 map 方法将用户集合转换为他们全名的集合:

$users = collect([
    ['first_name' => 'John', 'last_name' => 'Doe'],
    ['first_name' => 'Jane', 'last_name' => 'Smith'],
    ['first_name' => 'Bob', 'last_name' => 'Johnson']
]);
​
$fullNames = $users->map(function ($user) {
    return $user['first_name'] . ' ' . $user['last_name'];
});
​
// 输出: ['John Doe', 'Jane Smith', 'Bob Johnson']

在此示例中,我们使用 map 方法通过连接原始集合中每个用户的名字和姓氏来创建一个新的全名集合。