文章转发自专业的Laravel开发者社区,原始连接: https://learnku.com/laravel/t...
在 Laravel 中,有一个操做数组的很是好用的类,叫作集合。相信每一个 Laravel 的开发者都或多或少用过集合,尤为是在操做的 Eloquent 的时候。在这篇文章中,我会列出 10 个经常使用的方法。php
duplicates
方法能够检索出集合中全部重复的值。返回的数组中会包含每一个值在原数组中的键。laravel
<?php $collection = collect(['james', 'lisa', 'ryan', 'james', 'brad', 'lisa']); $collection->duplicates(); // [3 => 'james', 5 => 'lisa']
在不使用 foreach
的状况下也能够遍历集合,就是使用 each
方法。像一般的 foreach
方法同样, each
方法也有两个参数,分别是 item
和 key
。数组
<?php $collection->each(function ($item, $key) { // Do stuff });
当咱们在调试代码的时候,常常须要输出查看集合的内容。除了使用 dump($collection)
外,还可使用集合的 dump
方法,使用 dump
方法的好处是,输出的内容看起来更加整洁清爽。dom
<?php $collection = collect(['james', 'lisa', 'ryan']); $collection->dump(); /* Collection { #items: array:3 [ 0 => "james" 1 => "lisa" 2 => "ryan" ] } */
若是你想要在输出集合内容,而且打断点,可使用 dd
(输出并终止)方法。函数
has
方法能够用来查看某个键是否存在于集合中。参数能够是字符串,也能够是数组。若是传了数组做为参数,那么数组中全部的值都必须是集合中的键,结果才能返回 true,不然返回 false。spa
<?php $collection = collect([ 'title' => 'Harry Potter', 'author' => 'J.K. Rowling', 'price' => 25 ]); $collection->has('author'); // true $collection->has(['title', 'price']); // true $collection->has(['price', 'rating']); // false
implode
方法能够链接集合中的值。这个方法的做用跟 PHP 中的 implode
方法很是像。调试
<?php $collection = collect([ ['title' => 'Gift card', 'price' => 50], ['title' => 'Chair', 'price' => 80], ]); $collection->implode('title', ', '); // Gift card, Chair
若是集合中的值只是字符串,或数字,你只须要传递链接符做为参数便可。code
<?php $collection = collect([1,2,'foo',3,'bar']); $collection->implode('-'); // 1-2-foo-3-bar
可使用 push
方法将项目附加到集合的末尾。若是须要添加到集合的开头,则可使用 prepend
方法。blog
<?php $collection = collect([1, 2, 3]); $collection->push(4); $collection->all(); // [1, 2, 3, 4]
pull
方法将给定键从集合中移除并将返回其对应的值。排序
<?php $collection = collect([ 'title' => 'Harry Potter', 'author' => 'J.K. Rowling', 'price' => 25 ]); $collection->pull('author'); // 'J.K. Rowling' $collection->all(); // ['title' => 'Harry Potter', 'price' => 25]
shuffle
方法将会随机排序集合中的项目。
<?php $collection = collect([1, 2, 3]); $shuffled = $collection->shuffle(); $shuffled->all(); // [3, 1, 2] (random example)
您可使用 max 方法获取集合中的最大值。若是集合中包含数组,则能够传递参数以获取某个键的最大值。
<?php $max = collect([ ['title' => 'Gift card', 'price' => 50], ['title' => 'Chair', 'price' => 80] ])->max('price'); // 80 $max = collect([1, 2, 3])->max(); // 3
可使用 filter
方法来过滤集合。这个方法接受一个回调函数做为参数。在回调函数里定义过滤的规则,只有符合规则的值才能被留在集合中。
<?php $collection = collect([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]); $even_numbers = $collection->filter(function ($value, $key) { return $value % 2 == 0; }); $even_numbers->all(); // [2, 4, 6, 8, 10]
slice
方法能够用来分割集合,返回参数指定的索引位置及其以后的值,返回值的数组中会包含原数组的键。
注意,在下面的例子中,传递的参数是 2。意思是从索引 2 开始分割集合,而 不是 数组中的元素值 2。
<?php $collection = collect([1, 2, 3, 4, 5]); $sliced = $collection->slice(2); $sliced->all(); // [3, 4, 5]