Skip to content

不会用集合你就out了

「这是我参与2022首次更文挑战的第3天,活动详情查看:2022首次更文挑战」。

前两天介绍了laravel集合collection的使用,受到了掘友们的积极反馈,今天再接再厉,又撸一篇。

各位看官,里面请。

进阶命令

has

用来确认集合中是否含有给定的键 存在返回true,不存在返回false

bash
$collection->has('wzy');

implode

用来连接集合中的项目

bash
$collection->implode('juejin', ', ');

tips:数组的implode是将数组转成字符串

intersect

移除任何给定数组或集合内所没有的数值:

ini
$intersect = $collection->intersect(['X', 'Y', 'Z']);

isEmpty

假如集合是空的,isEmpty 方法会返回 true:

scss
collect([])->isEmpty();

keyBy

以给定键的值作为集合项目的键:

ini
$keyed = $collection->keyBy('user_id');

keyBy进阶技巧

传入回调函数,该函数会返回集合的键的值:

bash
$keyed = $collection->keyBy(function ($item) {     return strtoupper($item['product_id']); });

keys

返回该集合所有的键:

ini
$keys = $collection->keys();

map

遍历整个集合并将每一个数值传入给定的回调函数:

bash
$multiplied = $collection->map(function ($item, $key) {     return $item * 2; });

max

返回给定键的最大值:

lua
$max = collect([['x' => 10], ['x' => 20]])->max('x'); $max = collect([1, 2, 3, 4, 5])->max();

min

返回给定键的最小值:

lua
$min = collect([['x' => 10], ['x' => 20]])->min('x'); $min = collect([1, 2, 3, 4, 5])->min();

merge

将合并指定的数组或集合到原集合:

ini
$merged = $collection->merge(['price' => 100, 'discount' => false]);

代码示例:

ini
$collection = collect(['one'=>1]); $merged = $collection->merge(['price' => 100, 'discount' => false]); dd($merged);

运行结果:

ini
Illuminate\Support\Collection^ {#32   #items: array:3 [     "one" => 1     "price" => 100     "discount" => false   ] }

only

返回集合中指定键的所有项目:

ini
$filtered = $collection->only(['product_id', 'name']);

pluck

获取所有集合中给定键的值:

ini
$plucked = $collection->pluck('name');

pop

移除集合的最后一个元素:

perl
$collection->pop();

shift

移除并返回集合的第一个项目:

bash
$collection->shift();

push

附加一个项目到集合后面:

perl
$collection->push(5);

pull

以键从集合中移除并返回一个项目:

bash
$collection->pull('name');

prepend

在集合前面增加一个元素:

ruby
$collection->prepend(0);

小技巧:支持传入两个参数,第一个参数是值,第二个参数是键

ruby
$collection->prepend(0, 'zero');

put

在集合内设置一个给定键和数值:

bash
$collection->put('price', 100);

random

从集合中随机返回一个项目:

scss
$collection->random();

小技巧:传入一个整数到 random,则会返回集合类型,传入的整数代表随机返回的数量:

ini
$random = $collection->random(3);

进阶函数认真看

reduce

会将每次迭代的结果传入到下一次迭代:

bash
$total = $collection->reduce(function ($carry, $item) {     return $carry + $item; });

reject

以给定的回调函数筛选集合:

bash
$filtered = $collection->reject(function ($item) {     return $item > 2; });

reverse

反转集合内项目的顺序:

ini
$reversed = $collection->reverse();

transform

遍历集合并对集合内每一个项目调用给定的回调函数:

bash
$collection->transform(function ($item, $key) {     return $item * 2; });

欢迎互动

大家有什么好用的命令欢迎在评论区讨论

相关文章推荐

Laravel 必知必会的Collection 基础版

不要再傻傻的toArray()了

硬核文章推荐

性能优化反思:减少DB查询,合理使用成员变量。

PHP转Go 2021年年中总结

如何第一时间收到接口报错?不用测试妹子再质疑你是不是接口挂了。

Git使用实战:多人协同开发,紧急修复线上bug的Git操作指南。

性能优化反思:不要在for循环中操作DB

性能优化反思:不要在for循环中操作DB 进阶版

最后

👍🏻:觉得有收获请点个赞鼓励一下!

🌟:收藏文章,方便回看哦!

💬:评论交流,互相进步!

🚀 学习遇到瓶颈?想进大厂?

看完这篇技术文章,如果还是觉得不够系统,或者想在实战中快速提升?
王中阳的就业陪跑训练营,提供定制化学习路线 + 企业级实战项目 + 简历优化 + 模拟面试。

了解训练营详情