桐鄉(xiāng)網(wǎng)站設(shè)計(jì)公司游戲推廣論壇
Laravel Eloquent 通常返回一個(gè)集合作為結(jié)果,集合包含很多有用的、功能強(qiáng)大的方法。
你可以很方便的對(duì)集合進(jìn)行過濾、修改等操作。
本次教程就一起來看一看集合的常用方法及功能。
你可以使用助手函數(shù) collect 將數(shù)組轉(zhuǎn)化為集合。
$data = collect([1, 2, 3]);
1.增加
$data = collect([1, 2, 3]);
$data->push(3);
//輸出
array:4 [▼0 => 11 => 22 => 33 => 3
]$data->put('name','yuan');
//輸出
array:4 [▼0 => 11 => 22 => 3"name" => "yuan"
]
2.修改
$data = collect([1, 2, 3]);
$data->put(0, 'yuan');
//輸出
array:3 [▼0 => "yuan"1 => 22 => 3
]
3.查詢
#1.根據(jù)鍵值獲取
$data = collect([1, 2, 3]);
$res=$data->get(1);
//輸出 2#2.返回第一個(gè)元素
$data ->shift();
//輸出 1#3.給定值查詢集合,如果找到的話返回對(duì)應(yīng)的鍵,如果沒找到,則返回false
$res=$data->search(3);
//輸出 2#4.嚴(yán)格比較
$res=$data->search(6,true);
//輸出 false#5.轉(zhuǎn)化為數(shù)組
$res=$data->toArray();#6.轉(zhuǎn)化為JSON
$res=$data->toJson();
4.刪除
# 根據(jù)鍵值刪除
$res = $data->forget('1');# 從索引起切除一段后返回
# $collection->splice( <索引>, [ <切片長度> ] );
# 注:性質(zhì)同 `slice`,不同的地方在于 `slice` 不會(huì)更改原有集合
# $collection->splice( <索引>, [ <切片長度> ], [ <切去的要替換成的元素?cái)?shù)組> ] );
# 注:傳入含有新元素的數(shù)組作為第三個(gè)參數(shù)以取代集合中被移除的元素
$data = collect([1, 2, 3]);
$data->splice(0, 1);
//輸出
array:2 [▼0 => 21 => 3
]
5.統(tǒng)計(jì)
#1.求個(gè)數(shù)
$collection->count();#2.求平均
$collection->avg();
$collection->avg('<鍵名>'); // 多維#3.求和
$collection->sum();
$collection->sum('<鍵名>'); // 多維#4.求最大值
$collection->max();
$collection->max('<鍵名>'); // 多維#5.求最小值
$collection->min();
$collection->min('<鍵名>'); // 多維
6.篩選
#1.第一個(gè)元素
$collection->first();#2.最后一個(gè)元素
$collection->last();#3.條件查詢
$user = User::all();
$data = collect($user);
$res = $data->first(function ($key, $value) {return $key->id > 9;
});
//輸出 id>9的數(shù)據(jù)#4.多維數(shù)組篩選,返回元素
$collection->where( <鍵名>, <鍵值>, [ $strict = true ] ); // 默認(rèn)嚴(yán)格模式
$collection->whereLoose( <鍵名>, <鍵值> ); // 寬松模式
$collection->whereIn( <鍵名>, <鍵值數(shù)組>, [ $strict = true ] ); // 默認(rèn)嚴(yán)格模式
$collection->whereInLoose( <鍵名>, <鍵值數(shù)組> ); // 寬松模式
//例:$res = $data->where('id', '>',1);#5.獲取唯一的元素
$collection->unique(); // 一維
$collection->unique( <鍵名> ); // 多維
$collection->unique( function( $item ){return <確定是否唯一的值>;
} );
7.排序
#1.所有底層數(shù)組
$collection->all();#2.鍵名重新生成
$collection->values();#3.返回新的隨機(jī)排序的集合
$collection->shuffle();#4.返回新的倒序的集合
$collection->reverse();#5.返回從索引起的切片
$collection->slice( <索引>, [ <切片長度> ] );
# 注釋:索引可以為負(fù)數(shù),長度不填默認(rèn)至最后一個(gè)元素#6.一維集合排序
$collection->sort( [ function( $a, $b ){return < -1 | 1 | 0 >;
} ] );
# 注:不傳回調(diào)函數(shù),則默認(rèn)由小到大#7.多維集合排序
$collection->sortBy( <列名> ) // 以某列排序
$collection->sortBy( function( $item, $key ){return <參于排序的數(shù)>;
} )
# 注:排序從小到大依次為 undefined、字符或字符串、數(shù)字、數(shù)組對(duì)象
# 同為 undefined ,先出現(xiàn)的在前
# 同為 字符或字符串 ,一個(gè)字符一個(gè)字符比較其 Ascii 碼
# 同為 數(shù)組或?qū)ο?,比較其元素個(gè)數(shù)#8.多維集合排序倒序,性質(zhì)同 `sortBy`
$collection->sortByDesc();#9.取指定數(shù)量的元素的集合
$collection->take( <數(shù)量> );
# 注:數(shù)量為負(fù)數(shù),表示從末尾取
8.判斷
#1.是否為空
$collection->isEmpty();#2.是否含有指定值
$collection->contains( <鍵值> );
$collection->contains( <鍵名>, <鍵值> ); // 多維
$collection->contains(function( $key, $value ){return <判斷條件>
});#3.是否含有指定的鍵
$collection->has( <鍵名> );
9.合并
#1.集合元素拼接
$collection->implode( <拼接字符> ); // 一維
$collection->implode( <鍵名>, <拼接字符> ); // 多維中的某列#2.按個(gè)數(shù)拆分成多維
$prices = $collection->chunk(3);
$prices->toArray();
輸出:
[0 => [0 => 18,1 => 23,2 => 65],1 => [3 => 36,4 => 97,5 => 43],2 => [6 => 81]
]#3.多維合并為一維
$collection->collapse();
# 注:對(duì)于 item 不是數(shù)組的,會(huì)被丟棄#4.合并鍵值對(duì)(集合值作為鍵,另一集合或數(shù)組作為對(duì)應(yīng)值)
$collection->combine( <值數(shù)組> );
# 注:集合與另一集合或集合必須保持相同的元素個(gè)數(shù)
# 合并結(jié)果可能會(huì)由于集合有相同的值作為鍵值而個(gè)數(shù)減小
# 后出現(xiàn)的會(huì)覆蓋前面出現(xiàn)的
collect([ 1, 2, '1' ])->combine([ 'a', 'b', 'c' ]);
// [ 1 => 'c', 2 => 'b' ]#5.索引合并
$collection->zip( <新數(shù)組> );
collect([ 1, 2 ])->zip([ 'a', 'b' ]);
// [ [ 1, 'a' ], [ 2, 'b' ] ]
10.遍歷
#1.遍歷
$collection->each(function ($value, $key) {<...>
});
注:回調(diào)函數(shù)中,返回 false 會(huì)終止遍歷#2.遍歷返回,形成新的集合
$collection->map(function ($value, $key) {<...>return <元素的新值>;例子:$value['user_id'] += 1;return $value;
});#3.遍歷修改,*直接更改了原有集合*
$collection->transform(function ($value, $key) {<...>return <元素的新值>;
});#4.遍歷執(zhí)行回調(diào),最后轉(zhuǎn)為一維集合返回
$collection->flatMap(function( $value, $key ){return <新的元素>;
});
# 注:等價(jià)于 ->map()->collapse();#5.集合與數(shù)組合并
$collection->union( <數(shù)組> );
# 注:若集合與數(shù)組具有相同的鍵名,集合的將會(huì)保留,性質(zhì)類同于 `+`
11.參考鏈接
https://www.cnblogs.com/Json159/p/9570903.html
https://learnku.com/laravel/t/27647