Laravel集合Collection怎么用_Laravel集合常用函数详解
发布时间 - 2025-12-09 00:00:00 点击率:次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() - 排序
按指定字段或回调排序。
$sorted = collect([
['name' => 'Zoe', 'age' => 25],
['name' => 'John', 'age' => 30]
])->sortBy('age');
// 按年龄升序排列
支持回调:
$sorted = $collection->sortBy(fn($person) => strlen($person['name']));
groupBy() - 分组
按字段或回调结果对元素分组。
$grouped = collect([
['product' => 'Desk', 'category' => 'Furniture'],
['product' => 'Chair', 'category' => 'Furniture'],
['product' => 'Phone', 'category' => 'Electronics']
])->groupBy('category');
// 结果: ['Furniture' => [...], 'Electronics' => [...]]
contains() - 判断是否存在
检查集合是否包含某个值或满足条件的元素。
collect([1, 2, 3])->contains(2); // true
$users->contains('name', 'Alice'); // 是否有 name 为 Alice 的用户
first() 和 last() - 获取首尾元素
获取第一个或最后一个元素,支持传入条件。
$firstEven = collect([1, 2, 3, 4])->first(fn($item) => $item % 2 === 0);
// 返回 2
也可设置默认值:
collect([])->first(fn() => true, 'default');
merge() 和 collapse() - 合并与扁平化
merge() 合并两个集合:
collect([1, 2])->merge([3, 4]); // [1, 2, 3, 4]
collapse() 将多个数组合并成一个扁平集合:
collect([[1, 2], [3, 4]])->collapse(); // [1, 2, 3, 4]
toArray() 和 toJson() - 转换格式
将集合转为数组或 JSON 字符串:
$data->toArray();
$data->toJson(); // '{"1":"value"}'
基本上就这些。Laravel 集合让数据处理变得更简洁直观,尤其适合在服务层或控制器中进行数据加工。掌握核心方法后,读写代码效率会明显提升。
# php
# laravel
# js
# json
# go
# 回调函数
# 工具
# ai
# 排列
# red
# echo
# strlen
# Filter
# 字符串
# Collection
# map
# function
# 对象
# default
# 回调
# 链式
# 遍历
# 升序
# 你可以
# 第一个
# 多个
# 设为
# 也可
# 数据处理
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251811 】
【
AI营销90571 】
相关推荐:
EditPlus中的正则表达式实战(5)
如何快速建站并高效导出源代码?
哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?
Edge浏览器提示“由你的组织管理”怎么解决_去除浏览器托管提示【修复】
Laravel如何配置中间件Middleware_Laravel自定义中间件拦截请求与权限校验【步骤】
网站制作软件有哪些,制图软件有哪些?
,网页ppt怎么弄成自己的ppt?
如何撰写建站申请书?关键要点有哪些?
Laravel如何使用集合(Collections)进行数据处理_Laravel Collection常用方法与技巧
Laravel怎么进行数据库事务处理_Laravel DB Facade事务操作确保数据一致性
如何在Tomcat中配置并部署网站项目?
教学论文网站制作软件有哪些,写论文用什么软件
?
laravel怎么为API路由添加签名中间件保护_laravel API路由签名中间件保护方法
矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?
如何在建站之星绑定自定义域名?
laravel怎么为应用开启和关闭维护模式_laravel应用维护模式开启与关闭方法
laravel怎么在请求结束后执行任务(Terminable Middleware)_laravel Terminable Middleware请求结束任务执行方法
网站建设保证美观性,需要考虑的几点问题!
制作公司内部网站有哪些,内网如何建网站?
中山网站制作网页,中山新生登记系统登记流程?
Laravel如何与Docker(Sail)协同开发?(环境搭建教程)
专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?
如何在腾讯云服务器快速搭建个人网站?
如何实现javascript表单验证_正则表达式有哪些实用技巧
Python正则表达式进阶教程_复杂匹配与分组替换解析
如何在VPS电脑上快速搭建网站?
焦点电影公司作品,电影焦点结局是什么?
UC浏览器如何设置启动页 UC浏览器启动页设置方法
Laravel如何使用软删除(Soft Deletes)功能_Eloquent软删除与数据恢复方法
标题:Vue + Vuex 项目中正确使用 JWT 进行身份认证的实践指南
如何在万网开始建站?分步指南解析
创业网站制作流程,创业网站可靠吗?
Laravel N+1查询问题如何解决_Eloquent预加载(Eager Loading)优化数据库查询
厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?
Laravel怎么判断请求类型_Laravel Request isMethod用法
*服务器网站为何频现安全漏洞?
如何用ChatGPT准备面试 模拟面试问答与职场话术练习教程
个人网站制作流程图片大全,个人网站如何注销?
Win11搜索不到蓝牙耳机怎么办 Win11蓝牙驱动更新修复【详解】
东莞专业网站制作公司有哪些,东莞招聘网站哪个好?
html5如何实现懒加载图片_ intersectionobserver api用法【教程】
深圳网站制作培训,深圳哪些招聘网站比较好?
Laravel如何实现用户密码重置功能?(完整流程代码)
JavaScript模板引擎Template.js使用详解
如何在阿里云高效完成企业建站全流程?
Laravel全局作用域是什么_Laravel Eloquent Global Scopes应用指南
Laravel路由Route怎么设置_Laravel基础路由定义与参数传递规则【详解】
图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?
如何用AI一键生成爆款短视频文案?小红书AI文案写作指令【教程】
谷歌浏览器下载文件时中断怎么办 Google Chrome下载管理修复

