Laravel集合基于Illuminate\Support\Collection类,通过collect()创建,提供map、filter、reduce等链式方法处理数据,相比原生数组更优雅高效,常用于Eloquent结果加工。

Laravel 的集合(Collection)是处理数组数据的强大工具,它基于 Illuminate\Support\Collection 类实现,提供了丰富的方法来操作数组或可遍历的数据。相比原生 PHP 数组函数,集合语法更优雅、链式调用更清晰,广泛用于 Eloquent 查询结果的后续处理。
创建集合
你可以通过 collect() 辅助函数创建一个集合:
$data = collect([1, 2, 3, 4, 5]);
这个 $data 就是一个 Laravel 集合对象,可以调用所有集合方法。
常用集合函数详解
map() - 映射转换元素
对集合中的每个元素执行回调函数,并返回新的集合。
$multiplied = collect([1, 2, 3])->map(fn($item) => $item * 2);
// 结果: [2, 4, 6]
注意:map 不保留原始键名,如需保留使用 mapWithKeys()。
filter() - 过滤元素
根据回调返回 true 或 false 来筛选元素。
$even = collect([1, 2, 3, 4])->filter(fn($item) => $item % 2 === 0);
// 结果: [2, 4] (键保持不变)
最终可用 values() 重置键:
$even->values(); // [2, 4]
reduce() - 归约成单个值
将集合逐步合并为一个值,比如求和、拼接等。
$total = collect([1, 2, 3])->reduce(fn($carry, $item) => $carry + $item, 0);
// 结果: 6
carry 是累计值,初始值设为 0。
each() - 遍历集合
对每个元素执行操作,适合带副作用的逻辑(如发送邮件、记录日志)。
collect([1, 2, 3])->each(function ($item) {
echo $item;
});
与 map 不同,each 返回原集合,不生成新集合。
pluck() - 提取字段值
从数组或对象集合中提取某个字段的值。
$users = collect([
['name' => 'Alice', 'email' => 'alice@example.com'],
['name' => 'Bob', 'email' => 'bob@example.com']
]);
$names = $users->pluck('name');
// 结果: ['Alice', 'Bob']
支持嵌套字段:pluck('profile.phone')
sortBy() 和 sortByDesc() - 排序
按指定字段或回调排序。
标签: 常用函数 php laravel js json go 回调函数 工具 ai 排列 red
还木有评论哦,快来抢沙发吧~