前言:
最近在学习 laravel 框架,学习的版本是 7.15.0 ,记录一下学习过程中遇到的问题和难点以及一些总结。
简介
Illuminate\Support\Collection 类为处理数组数据提供了流式、方便的封装。Collection 类允许使用方法链对底层数组执行匹配和移除操作,通常每个 Collection 方法都会返回一个新的 Collection 实例。
创建集合
//注:默认情况下,Eloquent 查询的结果总是返回 Collection 实例。
$collection = collect([1, 2, 3]);
整理一下比较常用的方法
each()
each 方法迭代集合中的数据项并传递每个数据项到给定回调:
$collection = $collection->each(function ($item, $key) {
});
$collection->each(function ($item, $key) {
var_dump($item);
});
map()
map 方法遍历集合并传递每个值给给定回调。该回调可以修改数据项并返回,从而生成一个新的经过修改的集合:
$collection = collect([1, 2, 3, 4, 5]);
$data = $collection->map(function ($item, $key) {
return $item * 2;
});
$data->all();
return response()->json(['code'=>1,'data'=>$data]);
filter()
filter 方法通过给定回调过滤集合,只有通过给定真理测试的数据项才会保留下来。
$collection = collect([1, 2, 3, 4]);
$filtered = $collection->filter(function ($value, $key) {
return $value > 2;
});
return response()->json($filtered->toArray());
reduce()
reduce 方法用于减少集合到单个值,传递每个迭代结果到子迭代,其中 reduce() 中可以多传一个参数参与计算。
$collection = collect([1, 2, 3]);
$total = $collection->reduce(function ($carry, $item) {
return $carry + $item;
},5);
return response()->json($total);
更多的使用方法请参考文档:https://xueyuanjun.com/post/21513