---
### 1. collection 的使用
#### 1.1 獲取鍵值對
$collect = collect([1,2,3]);
$collectArray = $collect->toArray();
$all = $collect->all();
$keyValueCollect = collect(['k1' => 'v1', 'k2' => 'v2', 'k3' => 'v3']);
$keys = $keyValueCollect->keys()->toArray();
$values = $keyValueCollect->values()->toArray();
$keyValueCollect->last();//最后一個元素
$keyValueCollect->only('k1', 'k2'); //只返回特定的值/
$product = Product::all();
$title = $product->pluck('title')->dump(); //只看這一列
$take = $product->take(2)->dump(); //只看前面兩條
$product->toJson(); //轉換為JSON
---
#### 1.2 聚合運算
$ret = $product->pluck('title')->implode(','); //分割集合
//聚合運算
$product = Product::all()->pluck('price'); //獲取集合中某一列
$product->count(); //多少
$product->sum(); //合
$product->max(); //最大值
$product->min(); /最小值
---
### 1.3 集合中的判斷查找
//判斷查找
$exists = collect(['v1', 'v2', 'v3'])->contains('v2');
collect([1,2,3])->diff([2,3])->dd(); //差異比對 array_diff
$collect->has('k1'); //判斷是否有某個鍵
collect([])->isEmpty(); //是否判空 集合不能通過 empty 來判斷
//集合和數組是不一樣的
$products = Product::all(); //返回一個集合
$products->where('id', 3); //集合篩選
---
### 1.4 集合中的遍歷與過濾
//集合的遍歷
$products->each(function ($item){
var_dump($item->id);
});
//替換產生一個新的集合
$products->map(function ($item){
return $item->id;
});
$products->keyBy('id')->toArray(); //把主鍵放到ID列
$products->groupBy('category_id')->toArray(); //分組
//集合過濾
$products->filter(function ($item){
return $item->id > 3;
})->dd();
$collect->flip()->toArray(); //key value 互換
$collect->reverse()->toArray(); //逆序
collect([12,3,4,43,4,2])->sortByDesc()->dd(); //降序排序
$products->sortByDesc(function ($product){
return $product->price();
});
collect(['k1', 'k2'])->combine(['v1', 'v2'])->dd(); //鍵值對合并成新的數組
collect(['k1', 'k2'])->crossJoin(['v1', 'v2'])->dd(); //排列組合笛卡爾積