「这是我参与2022首次更文挑战的第2天,活动详情查看:2022首次更文挑战」。
首先说明一下我为什么要整理这篇文章?
举个小栗子:
$collection->toArray()
上面将集合转成数组的函数是我之前做项目时最常用的命令,我之前没有深入了解collection,Eloquent返回的数据我都会再使用toArray()转成数组,现在想想真是可笑。
collection明明已经给我们做了这么多好用的封装。我竟然又转回数组进行操作了。
如果你也有这种情况,那么这篇文章一定适合你看。
Laravel 集合是 Laravel 框架中一个十分有用的工具。Laravel 集合就像是在 PHP 中的数组,集合的目的在于让我们轻松的对数组进行处理。Laravel查找出来的数据,一般都是集合形式。
这篇介绍进阶知识点。
测试相关命令
以给定的回调函数筛选集合,只留下那些通过判断测试的项目:
$filtered = $collection->filter(function ($item) {
return $item > 2;
});
返回集合中,第一个通过给定测试的元素:
$res = collect([1, 2, 3, 4, 5])->first(function ($key, $value) {
var_dump('key:' . $key);
var_dump('value:' . $value);
return $key > 2;
});
dd($res);
输出结果是:
string(5) "key:1"
string(7) "value:0"
string(5) "key:2"
string(7) "value:1"
string(5) "key:3"
string(7) "value:2"
3
返回集合中,最后一个通过给定测试的元素:
$collection->last();
转换命令
将集合转换成纯 PHP 数组:
这是我之前最常用的命令,我封装了基础函数,把集合都转成数组进行使用了,太搞笑了~ 学习技术还是要深入哇。
$collection->toArray();
将集合转换成 JSON:
$collection->toJson();
将多维集合转为一维集合:
$flattened = $collection->flatten();
实例代码:
$collection = collect([1,2,3,'num'=>[4,5,6]]);
var_dump($collection);
$collection = $collection->flatten();
var_dump($collection);
dd('-----');
运行结果:
object(Illuminate\Support\Collection)#2541 (1) {
["items":protected]=>
array(4) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
int(3)
["num"]=>
array(3) {
[0]=>
int(4)
[1]=>
int(5)
[2]=>
int(6)
}
}
}
object(Illuminate\Support\Collection)#32 (1) {
["items":protected]=>
array(6) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
int(3)
[3]=>
int(4)
[4]=>
int(5)
[5]=>
int(6)
}
}
"-----"
将集合中的键和对应的数值进行互换:
$flipped = $collection->flip();
代码实例:
$collection = collect(['one'=>1]);
print $collection;
print PHP_EOL;
$collection = $collection->flip();
print $collection;
print PHP_EOL;
exit();
运行结果:
{"one":1} {"1":"one"}
进阶命令
通过键名从集合中移除掉一个项目:
$collection->forget('name');
返回含有可以用来在给定页码显示项目的新集合:
在CMS和需要展示页码的项目中比较实用
$chunk = $collection->forPage(2, 3);
返回给定键的项目。如果该键不存在,则返回 null:
很基础 不用过多介绍
$value = $collection->get('name');
根据给定的键替集合内的项目分组:
有些场景下我们可以在sql查询时直接进行分组,当sql分组查询不方便时,我们可以先拿到数据,再通过集合的groupBy()进行分组
$grouped = $collection->groupBy('account_id');
欢迎互动
大家有什么好用的命令欢迎在评论区讨论
相关文章推荐
硬核文章推荐
如何第一时间收到接口报错?不用测试妹子再质疑你是不是接口挂了。
Git使用实战:多人协同开发,紧急修复线上bug的Git操作指南。
最后
👍🏻:觉得有收获请点个赞鼓励一下!
🌟:收藏文章,方便回看哦!
💬:评论交流,互相进步!