进阶命令
has
用来确认集合中是否含有给定的键 存在返回true,不存在返回false
$collection->has('wzy');
implode
用来连接集合中的项目
$collection->implode('juejin', ', ');
tips:数组的implode是将数组转成字符串
intersect
移除任何给定数组或集合内所没有的数值:
$intersect = $collection->intersect(['X', 'Y', 'Z']);
isEmpty
假如集合是空的,isEmpty 方法会返回 true:
collect([])->isEmpty();
keyBy
以给定键的值作为集合项目的键:
$keyed = $collection->keyBy('user_id');
keyBy进阶技巧
传入回调函数,该函数会返回集合的键的值:
$keyed = $collection->keyBy(function ($item) { return strtoupper($item['product_id']); });
keys
返回该集合所有的键:
$keys = $collection->keys();
map
遍历整个集合并将每一个数值传入给定的回调函数:
$multiplied = $collection->map(function ($item, $key) { return $item * 2; });
max
返回给定键的最大值:
$max = collect([['x' => 10], ['x' => 20]])->max('x'); $max = collect([1, 2, 3, 4, 5])->max();
min
返回给定键的最小值:
$min = collect([['x' => 10], ['x' => 20]])->min('x'); $min = collect([1, 2, 3, 4, 5])->min();
merge
将合并指定的数组或集合到原集合:
$merged = $collection->merge(['price' => 100, 'discount' => false]);
代码示例:
$collection = collect(['one'=>1]); $merged = $collection->merge(['price' => 100, 'discount' => false]); dd($merged);
运行结果:
Illuminate\Support\Collection^ {#32 #items: array:3 [ "one" => 1 "price" => 100 "discount" => false ] }
only
返回集合中指定键的所有项目:
$filtered = $collection->only(['product_id', 'name']);
pluck
获取所有集合中给定键的值:
$plucked = $collection->pluck('name');
pop
移除集合的最后一个元素:
$collection->pop();
shift
移除并返回集合的第一个项目:
$collection->shift();
push
附加一个项目到集合后面:
$collection->push(5);
pull
以键从集合中移除并返回一个项目:
$collection->pull('name');
prepend
在集合前面增加一个元素:
$collection->prepend(0);
小技巧:支持传入两个参数,第一个参数是值,第二个参数是键
$collection->prepend(0, 'zero');
put
在集合内设置一个给定键和数值:
$collection->put('price', 100);
random
从集合中随机返回一个项目:
$collection->random();
小技巧:传入一个整数到 random,则会返回集合类型,传入的整数代表随机返回的数量:
$random = $collection->random(3);
进阶函数认真看
reduce
会将每次迭代的结果传入到下一次迭代:
$total = $collection->reduce(function ($carry, $item) { return $carry + $item; });
reject
以给定的回调函数筛选集合:
$filtered = $collection->reject(function ($item) { return $item > 2; });
reverse
反转集合内项目的顺序:
$reversed = $collection->reverse();
transform
遍历集合并对集合内每一个项目调用给定的回调函数:
$collection->transform(function ($item, $key) { return $item * 2; });