berkumpul
. . )
.
Pengenalan
Kelas
IlluminateSupportCollection menyediakan enkapsulasi yang lebih mudah dibaca dan mudah untuk memproses data tatasusunan. Sila lihat kod di bawah untuk contoh khusus. Kami menggunakan fungsi pembantu collect
untuk mencipta contoh koleksi baharu daripada tatasusunan, laksanakan fungsistrtoupper
pada setiap elemen dan kemudian padamkan semua elemen kosong:IlluminateSupportCollection
类提供了一个更具可读性和更便于处理数组数据的封装。具体例子请查看下面代码。我们使用collect
辅助函数从数组中创建一个新的集合实例,对其中每一个元素执行strtoupper
函数之后再删除所有的空元素:$collection = collect(['taylor', 'abigail', null])->map(function ($name) { return strtoupper($name); })->reject(function ($name) { return empty($name); });
正如你所见,
Collection
类允许你链式调用其它方法,以达到在底层数组上流畅的执行 map 和 reduce 操作,通常,集合是不可变的,这意味着每一个Collection
方法都会返回一个新的Collection
实例。创建集合
如上所述,
collect
辅助函数会为指定的数组返回一个新的IlluminateSupportCollection
实例。因此,我们可以这样轻松的创建一个集合:$collection = collect([1, 2, 3]);
{tip} 通常,Eloquent 查询的结果返回的内容都是
Collection
实例。扩展集合
集合都是「可宏扩展」(macroable) 的,它允许你在执行时将其它方法添加到
Collection
类。例如,通过下面的代码在Collection
类中添加一个toUpper
use Illuminate\Support\Str;Collection::macro('toUpper', function () { return $this->map(function ($value) { return Str::upper($value); }); });$collection = collect(['first', 'second']); $upper = $collection->toUpper(); // ['FIRST', 'SECOND']
As you As anda boleh lihat, kelasCollection
membolehkan anda membuat panggilan berantai ke kaedah lain untuk melaksanakan peta dengan lancar dan mengurangkan operasi pada tatasusunan asas Secara umumnya, koleksi tidak boleh diubah, yang bermaksud setiapKoleksi semuanya akan mengembalikan contoh Koleksi
baharu.Membuat Koleksi
Seperti yang dinyatakan di atas,kumpul code> Fungsi helper mengembalikan contoh IlluminateSupportCollection
baharu untuk tatasusunan yang ditentukan. Oleh itu, kita boleh membuat koleksi seperti ini dengan mudah:{tip} Biasanya, hasil yang dikembalikan oleh pertanyaan Eloquent ialah contohcollect([1, 2, 3])->all();// [1, 2, 3]
Collection
. 🎜🎜🎜🎜🎜Melanjutkan koleksi
🎜Koleksi adalah "boleh makro " "Boleh Diperluas" (macroable), yang membolehkan anda menambah kaedah tambahan pada kelasCollection
pada masa pelaksanaan. Sebagai contoh, tambahkan kaedahtoUpper
dalam kelasCollection
dengan kod berikut: 🎜$average = collect([['foo' => 10], ['foo' => 10], ['foo' => 20], ['foo' => 40]])->avg('foo'); // 20 $average = collect([1, 1, 2, 4])->avg(); // 2
🎜Biasanya, anda harus mengisytiharkan makro koleksi di dalam pembekal perkhidmatan. 🎜🎜🎜🎜🎜🎜🎜Kaedah yang tersedia
Mengikuti dokumentasi, kami akan meneroka
Collection
类的每个方法。请牢记,所有方法都可以通过链式访问的形式优雅的操作数组。而且,几乎所有的方法都会返回一个新的Collection
contoh yang membolehkan anda menyimpan salinan asal koleksi apabila perlu: Senarai Kaedahsemua
purata
avg
chunk
runtuh
combine
contain
mengandungi Ketat
kira
crossJoin
dd
diff
diffAssoc
diffKeys
dump
each
eachSpread
eachSpread
tapis
first
firstwhere
flatMap
ratakan . intersectByKeys
isEmpty
isNotEmpty
keyBy
Kekunci WithKeys
maks
median
gabung
min
mode
nth
sahaja
pad
partition
paip
prepend
tarik
tolak
put
rawak
kurangkan
tolak
terbalikkan
cari
shift
shuffleshuffle
sort
sortBy
sortByDesc
sortKeys
sortKeysDesc
splice
split
sum
take
tangkap masa
toArray
toJson
transform
union
unik . bila Kosong
apabilaTiadaKosong
dimana
dimanaKetat
dimana Antara
whereIn
whereInStrict
whereInstanceOf
whereNotBetween
whereNotIn
whereInstanceOf
whereNotBetween
whereNotIn
whereInstanceOf
whereNotBetween
whereNotIn
whereNotInStrict
zipall()
all
mengembalikan tatasusunan asas yang diwakili oleh koleksi:$collection = collect([1, 2, 3, 4, 5, 6, 7]); $chunks = $collection->chunk(4); $chunks->toArray(); // [[1, 2, 3, 4], [5, 6, 7]]
average()
avg< /code>
all()
all
方法返回该集合表示的底层数组:@foreach ($products->chunk(3) as $chunk) <div class="row"> @foreach ($chunk as $product) <div class="col-xs-4"> {{ $product->name }} </div> @endforeach </div> @endforeach
average()
avg
方法的别名。avg()
avg
方法返回给定键的 平均值 :$collection = collect([[1, 2, 3], [4, 5, 6], [7, 8, 9]]); $collapsed = $collection->collapse(); $collapsed->all(); // [1, 2, 3, 4, 5, 6, 7, 8, 9]
chunk()
chunk
方法将集合拆成多个给定大小的小集合:$collection = collect(['name', 'age']); $combined = $collection->combine(['George', 29]); $combined->all(); // ['name' => 'George', 'age' => 29]
这个方法在使用网格系统的 视图 中特别适用,例如 Bootstrap。 想象你有一个 Eloquent 模型的集合要在网格中显示:
$collection = collect(['John Doe']); $concatenated = $collection->concat(['Jane Doe'])->concat(['name' => 'Johnny Doe']); $concatenated->all(); // ['John Doe', 'Jane Doe', 'Johnny Doe']
collapse()
collapse
Alias untuk kaedah.avg()
untuk kunci yang diberikan: 🎜avg kaedah mengembalikan purata $collection = collect(['name' => 'Desk', 'price' => 100]); $collection->contains('Desk'); // true $collection->contains('New York'); // false
🎜🎜 🎜🎜
🎜chunk()
chunk
kaedah membahagikan koleksi kepada berbilang Small koleksi saiz tertentu: 🎜$collection = collect([ ['product' => 'Desk', 'price' => 200], ['product' => 'Chair', 'price' => 100], ]); $collection->contains('product', 'Bookcase'); // false
🎜Kaedah ini berfungsi dengan baik terutamanya dalam paparan yang menggunakan sistem grid, seperti Bootstrap🎜. Bayangkan anda mempunyai koleksi model Eloquent untuk dipaparkan dalam grid: 🎜$collection = collect([1, 2, 3, 4, 5]); $collection->contains(function ($value, $key) { return $value > 5; }); // false
🎜🎜🎜🎜< kod >collapse()
🎜runtuhkan
kaedah menggabungkan koleksi berbilang tatasusunan ke dalam koleksi tatasusunan: 🎜$collection = collect([1, 2, 3, 4]); $collection->count(); // 4
🎜🎜🎜🎜🎜🎜combine()
combine()
combine
方法可以将一个集合的值作为键,再将另一个数组或集合的值作为值合并成一个集合:$collection = collect([1, 2]); $matrix = $collection->crossJoin(['a', 'b']); $matrix->all(); /* [ [1, 'a'], [1, 'b'], [2, 'a'], [2, 'b'], ] */ $collection = collect([1, 2]); $matrix = $collection->crossJoin(['a', 'b'], ['I', 'II']); $matrix->all(); /* [ [1, 'a', 'I'], [1, 'a', 'II'], [1, 'b', 'I'], [1, 'b', 'II'], [2, 'a', 'I'], [2, 'a', 'II'], [2, 'b', 'I'], [2, 'b', 'II'], ] */
concat()
concat
方法将给定的数组
或集合值追加到集合的末尾:$collection = collect(['John Doe', 'Jane Doe']); $collection->dd(); /* Collection { #items: array:2 [ 0 => "John Doe" 1 => "Jane Doe" ] } */
contains()
contains
方法判断集合是否包含指定的集合项:$collection = collect([1, 2, 3, 4, 5]); $diff = $collection->diff([2, 4, 6, 8]); $diff->all(); // [1, 3, 5]
你也可以使用
contains
方法传递一组键 / 值对,可以判断该键 / 值对是否存在于集合中:$collection = collect([ 'color' => 'orange', 'type' => 'fruit', 'remain' => 6 ]); $diff = $collection->diffAssoc([ 'color' => 'yellow', 'type' => 'fruit', 'remain' => 3, 'used' => 6 ]); $diff->all(); // ['color' => 'orange', 'remain' => 6]
最后,你也可以用
contains
方法传递一个回调函数来执行自己的真实测试:$collection = collect([ 'one' => 10, 'two' => 20, 'three' => 30, 'four' => 40, 'five' => 50, ]); $diff = $collection->diffKeys([ 'two' => 2, 'four' => 4, 'six' => 6, 'eight' => 8, ]); $diff->all(); // ['one' => 10, 'three' => 30, 'five' => 50]
contains
方法在检查集合项的值时使用「宽松」比较,这意味着具有整数值的字符串将被视为等于相同值的整数。相反containsStrict
方法则是使用「严格」比较进行过滤。containsStrict()
这个方法和
contains
方法类似,但是它却是使用了「严格」比较来比较所有的值。count()
count
方法返回这个集合内集合项的总数量:$collection = collect(['John Doe', 'Jane Doe']); $collection->dump(); /* Collection { #items: array:2 [ 0 => "John Doe" 1 => "Jane Doe" ] } */
crossJoin()
crossJoin
方法交叉连接指定数组或集合的值,返回所有可能排列的笛卡尔积:$collection->each(function ($item, $key) { // });
dd()
dd
方法用于打印集合项并中断脚本执行:$collection->each(function ($item, $key) { if (/* 某些条件 */ ) { return false; } });
如果你不想中断执行脚本,请使用
dump
方法代替。diff()
diff
方法将集合与其它集合或纯 PHP数组
进行值的比较。然后返回原集合中存在而指定集合中不存在的值:$collection = collect([['John Doe', 35], ['Jane Doe', 33]]); $collection->eachSpread(function ($name, $age) { // });
diffAssoc()
diffAssoc
方法与另外一个集合或基于它的键和值的 PHP数组
combine
kaedah boleh menggunakan nilai set sebagai kunci, dan kemudian menggabungkan nilai tatasusunan lain atau set sebagai nilai kepada bentuk satu set:$collection->eachSpread(function ($name, $age) { return false; });
concat()
Kaedah concat menambahkan array
atau nilai koleksi yang diberikan pada penghujung koleksi: 🎜collect([1, 2, 3, 4])->every(function ($value, $key) { return $value > 2; }); // false
🎜🎜🎜🎜🎜mengandungi()🎜 mengandungi kaedah menentukan sama ada koleksi mengandungi item koleksi yang ditentukan: 🎜 melepasi set pasangan kunci/nilai, yang boleh digunakan untuk menentukan sama ada pasangan kunci/nilai wujud dalam koleksi: 🎜$collection = collect([]); $collection->every(function($value, $key) { return $value > 2; }); // true
🎜Anda juga boleh menggunakan kaedah < Kod>mengandungi$collection = collect(['product_id' => 1, 'price' => 100, 'discount' => false]); $filtered = $collection->except(['price', 'discount']); $filtered->all(); // ['product_id' => 1]
🎜Akhir sekali, anda juga boleh menggunakan kaedahmengandungi
untuk lulus fungsi panggil balik untuk melaksanakan ujian kehidupan sebenar anda sendiri: Kaedah 🎜$collection = collect([1, 2, 3, 4]); $filtered = $collection->filter(function ($value, $key) { return $value > 2; }); $filtered->all(); // [3, 4]
🎜mengandungi
menggunakan perbandingan "santai" semasa menyemak nilai koleksi item, bermakna rentetan dengan nilai integer akan dianggap sama dengan nilai integer yang sama. Sebaliknya, kaedahcontainsStrict
🎜 menggunakan perbandingan "ketat" untuk penapisan. 🎜🎜🎜🎜🎜🎜mengandungiStrict()🎜Kaedah ini ialah sama seperti kaedah < a href="#method-contains"> mengandungi
🎜, tetapi ia menggunakan perbandingan "ketat" untuk membandingkan semua nilai. 🎜🎜🎜🎜🎜🎜count()
🎜count
Kaedah mengembalikan jumlah bilangan item koleksi dalam koleksi ini: 🎜$collection = collect([1, 2, 3, null, false, '', 0, []]); $collection->filter()->all(); // [1, 2, 3]
🎜🎜🎜🎜🎜crossJoin()🎜 crossJoin
kaedah sambung silang nilai-nilai tatasusunan atau koleksi yang ditentukan, mengembalikan produk Cartesian dari semua pilih atur yang mungkin: 🎜collect([1, 2, 3, 4])->first(function ($value, $key) { return $value > 2; }); // 3
🎜🎜🎜🎜🎜dd()
🎜dd
kaedah digunakan untuk mencetak item koleksi Dan mengganggu pelaksanaan skrip: 🎜collect([1, 2, 3, 4])->first(); // 1
🎜 Jika anda tidak mahu mengganggu pelaksanaan skrip, gunakan kaedahdump
🎜 sebaliknya . 🎜🎜🎜🎜🎜🎜diff()
🎜diff Kaedah
membandingkan nilai koleksi dengan koleksi lain atauarray
PHP tulen. Kemudian kembalikan nilai yang wujud dalam koleksi asal tetapi tidak wujud dalam koleksi yang ditentukan: 🎜$collection = collect([ ['name' => 'Regena', 'age' => null], ['name' => 'Linda', 'age' => 14], ['name' => 'Diego', 'age' => 23], ['name' => 'Linda', 'age' => 84], ]); $collection->firstWhere('name', 'Linda'); // ['name' => 'Linda', 'age' => 14]
🎜🎜🎜🎜🎜Kaedah diffAssoc()🎜 diffAssoc
membandingkan dengan koleksi lain atau PHParray
berdasarkan kunci dan nilainya. Kaedah ini akan mengembalikan pasangan kunci/nilai yang koleksi asalnya tidak wujud dalam koleksi yang ditentukan: 🎜$collection->firstWhere('age', '>=', 18); // ['name' => 'Diego', 'age' => 23]
🎜🎜🎜🎜🎜🎜diffKeys()
diffKeys()
diffKeys
方法和另外一个集合或 PHP数组
的键进行比较,然后返回原集合中存在而指定集合中不存在键所对应的键 / 值对:$collection->firstWhere('age'); // ['name' => 'Linda', 'age' => 14]
dump()
dump
方法用于打印集合项:$collection = collect([ ['name' => 'Sally'], ['school' => 'Arkansas'], ['age' => 28] ]); $flattened = $collection->flatMap(function ($values) { return array_map('strtoupper', $values); }); $flattened->all(); // ['name' => 'SALLY', 'school' => 'ARKANSAS', 'age' => '28'];
如果要在打印集合后终止执行脚本,请使用
dd
方法代替。each()
each
方法用于循环集合项并将其传递到回调函数中:$collection = collect(['name' => 'taylor', 'languages' => ['php', 'javascript']]); $flattened = $collection->flatten(); $flattened->all(); // ['taylor', 'php', 'javascript'];
如果你想中断对集合项的循环,那么就在你的回调函数中返回
false
:$collection = collect([ 'Apple' => [ ['name' => 'iPhone 6S', 'brand' => 'Apple'], ], 'Samsung' => [ ['name' => 'Galaxy S7', 'brand' => 'Samsung'] ], ]); $products = $collection->flatten(1);$products->values()->all(); /* [ ['name' => 'iPhone 6S', 'brand' => 'Apple'], ['name' => 'Galaxy S7', 'brand' => 'Samsung'], ] */
eachSpread()
eachSpread
方法用于循环集合项,将每个嵌套集合项的值传递给回调函数:$collection = collect(['name' => 'taylor', 'framework' => 'laravel']); $flipped = $collection->flip();$flipped->all(); // ['taylor' => 'name', 'laravel' => 'framework']
你可以通过在回调函数里返回
false
来中断循环:$collection = collect(['name' => 'taylor', 'framework' => 'laravel']); $collection->forget('name');$collection->all(); // ['framework' => 'laravel']
every()
every
方法可用于验证集合中的每一个元素是否通过指定的条件测试:$collection = collect([1, 2, 3, 4, 5, 6, 7, 8, 9]); $chunk = $collection->forPage(2, 3);$chunk->all(); // [4, 5, 6]
如果集合为空,
every
将返回 true:$collection = collect(['name' => 'taylor', 'framework' => 'laravel']); $value = $collection->get('name'); // taylor
except()
except
方法返回集合中除了指定键之外的所有集合项:$collection = collect(['name' => 'taylor', 'framework' => 'laravel']); $value = $collection->get('foo', 'default-value'); // default-value
与
except
对应的是 only 方法。filter()
filter
方法使用给定的回调函数过滤集合,只保留那些通过指定条件测试的集合项:$collection->get('email', function () { return 'default-value'; }); // default-value
如果没有提供回调函数,集合中所有返回
false
的元素都会被移除:$collection = collect([ ['account_id' => 'account-x10', 'product' => 'Chair'], ['account_id' => 'account-x10', 'product' => 'Bookcase'], ['account_id' => 'account-x11', 'product' => 'Desk'], ]); $grouped = $collection->groupBy('account_id');$grouped->toArray(); /* [ 'account-x10' => [ ['account_id' => 'account-x10', 'product' => 'Chair'], ['account_id' => 'account-x10', 'product' => 'Bookcase'], ], 'account-x11' => [ ['account_id' => 'account-x11', 'product' => 'Desk'], ], ] */
与
filter
对应的是 reject 方法。first()
first
方法返回集合中通过指定条件测试的第一个元素:$grouped = $collection->groupBy(function ($item, $key) { return substr($item['account_id'], -3); }); $grouped->toArray(); /* [ 'x10' => [ ['account_id' => 'account-x10', 'product' => 'Chair'], ['account_id' => 'account-x10', 'product' => 'Bookcase'], ], 'x11' => [ ['account_id' => 'account-x11', 'product' => 'Desk'], ], ] */
你也可以不传入参数调用
first
方法来获取集合中的第一个元素。如果集合为空,则会返回null
diffKeys
kaedah membandingkan kunci koleksi lain atau PHParray
, dan kemudian mengembalikan kunci dalam asal koleksi Pasangan kunci/nilai yang sepadan dengan kunci tidak wujud dalam koleksi yang ditentukan:$data = new Collection([ 10 => ['user' => 1, 'skill' => 1, 'roles' => ['Role_1', 'Role_3']], 20 => ['user' => 2, 'skill' => 1, 'roles' => ['Role_1', 'Role_2']], 30 => ['user' => 3, 'skill' => 2, 'roles' => ['Role_1']], 40 => ['user' => 4, 'skill' => 2, 'roles' => ['Role_2']], ]); $result = $data->groupBy([ 'skill', function ($item) { return $item['roles']; }, ], $preserveKeys = true); /* [ 1 => [ 'Role_1' => [ 10 => ['user' => 1, 'skill' => 1, 'roles' => ['Role_1', 'Role_3']], 20 => ['user' => 2, 'skill' => 1, 'roles' => ['Role_1', 'Role_2']], ], 'Role_2' => [ 20 => ['user' => 2, 'skill' => 1, 'roles' => ['Role_1', 'Role_2']], ], 'Role_3' => [ 10 => ['user' => 1, 'skill' => 1, 'roles' => ['Role_1', 'Role_3']], ], ], 2 => [ 'Role_1' => [ 30 => ['user' => 3, 'skill' => 2, 'roles' => ['Role_1']], ], 'Role_2' => [ 40 => ['user' => 4, 'skill' => 2, 'roles' => ['Role_2']], ], ], ]; */
dump()
dump
kaedah digunakan untuk mencetak item koleksi: 🎜$collection = collect(['account_id' => 1, 'product' => 'Desk', 'amount' => 5]); $collection->has('product'); // true $collection->has(['product', 'amount']); // true $collection->has(['amount', 'price']); // false
🎜Jika anda ingin menamatkan pelaksanaan skrip selepas mencetak koleksi, gunakan Sebaliknya kaedahdd
🎜. 🎜🎜🎜🎜🎜🎜each()
🎜each Kaedah
digunakan untuk menggelungkan item koleksi dan menghantarnya ke dalam fungsi panggil balik: 🎜$collection = collect([ ['account_id' => 1,'product' => 'Desk'], ['account_id' => 2, 'product' => 'Chair'], ]); $collection->implode('product', ', '); // Desk, Chair
🎜 Jika anda ingin memutuskan gelung pada item koleksi, kemudian kembalikanfalse
dalam fungsi panggil balik anda: 🎜collect([1, 2, 3, 4, 5])->implode('-'); // '1-2-3-4-5'
🎜🎜🎜🎜🎜eachSpread()
🎜Kaedah eachSpread digunakan untuk menggelung melalui item koleksi, menghantar nilai setiap item koleksi bersarang ke fungsi panggil balik: 🎜 $collection = collect(['Desk', 'Sofa', 'Chair']); $intersect = $collection->intersect(['Desk', 'Chair', 'Bookcase']); $intersect->all(); // [0 => 'Desk', 2 => 'Chair']
🎜Anda boleh mengganggu gelung dengan mengembalikanfalse
dalam panggilan balik fungsi: 🎜$collection = collect([ 'serial' => 'UX301', 'type' => 'screen', 'year' => 2009 ]); $intersect = $collection->intersectByKeys([ 'reference' => 'UX404', 'type' => 'tab', 'year' => 2011 ]); $intersect->all(); // ['type' => 'screen', 'year' => 2009]
🎜🎜🎜🎜🎜every()
🎜< kod>setiap Kaedah boleh digunakan untuk mengesahkan sama ada setiap elemen dalam koleksi melepasi ujian keadaan yang ditentukan: 🎜collect([])->isEmpty(); // true
🎜Jika koleksi kosong,setiap akan kembali benar: 🎜 collect([])->isNotEmpty(); // false
🎜 🎜🎜🎜🎜except()
🎜except kaedah kod> mengembalikan koleksi Semua item koleksi kecuali kunci yang ditentukan: 🎜
sepadan dengan kaedah hanya🎜. 🎜🎜🎜🎜$collection = collect([ ['product_id' => 'prod-100', 'name' => 'Desk'], ['product_id' => 'prod-200', 'name' => 'Chair'], ]); $keyed = $collection->keyBy('product_id');$keyed->all(); /* [ 'prod-100' => ['product_id' => 'prod-100', 'name' => 'Desk'], 'prod-200' => ['product_id' => 'prod-200', 'name' => 'Chair'], ] */
🎜 dankecuali 🎜🎜penapis()🎜 penapis Kaedah menggunakan fungsi panggil balik yang diberikan untuk menapis koleksi, mengekalkan hanya item koleksi yang lulus ujian syarat yang ditentukan: 🎜 $keyed = $collection->keyBy(function ($item) { return strtoupper($item['product_id']); }); $keyed->all(); /* [ 'PROD-100' => ['product_id' => 'prod-100', 'name' => 'Desk'], 'PROD-200' => ['product_id' => 'prod-200', 'name' => 'Chair'], ] */
🎜Jika tiada fungsi panggil balik disediakan, semua elemen dalam koleksi yang mengembalikansalah code> akan dialih keluar: 🎜 $collection = collect([ 'prod-100' => ['product_id' => 'prod-100', 'name' => 'Desk'], 'prod-200' => ['product_id' => 'prod-200', 'name' => 'Chair'], ]); $keys = $collection->keys(); $keys->all(); // ['prod-100', 'prod-200']
🎜 danfilter
sepadan dengan kaedah reject🎜. 🎜🎜🎜🎜🎜🎜first()🎜 first Kaedah
mengembalikan elemen pertama dalam koleksi yang melepasi ujian keadaan yang ditentukan: 🎜collect([1, 2, 3, 4])->last(function ($value, $key) { return $value < 3; }); // 2
🎜 Anda juga boleh memanggil kaedahfirst
tanpa menghantar parameter untuk mendapatkan elemen pertama dalam koleksi. Jika koleksi kosong,null
akan dikembalikan: 🎜collect([1, 2, 3, 4])->last(); // 4
🎜🎜🎜🎜🎜🎜KaedahfirstWhere()
firstWhere()
firstWhere
方法返回集合中含有指定键 / 值对的第一个元素:$collection = collect([1, 2, 3, 4, 5]); $multiplied = $collection->map(function ($item, $key) { return $item * 2; }); $multiplied->all(); // [2, 4, 6, 8, 10]
你也可以使用运算符来调用
firstWhere
方法:class Currency{ /** * Create a new currency instance. * * @param string $code * @return void */ function __construct(string $code) { $this->code = $code; } } $collection = collect(['USD', 'EUR', 'GBP']); $currencies = $collection->mapInto(Currency::class); $currencies->all(); // [Currency('USD'), Currency('EUR'), Currency('GBP')]
和 where 方法一样,你可以将一个参数传递给
firstWhere
方法。在这种情况下,firstWhere
方法将返回指定键的值为「真」的第一个集合项:$collection = collect([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]); $chunks = $collection->chunk(2); $sequence = $chunks->mapSpread(function ($even, $odd) { return $even + $odd; }); $sequence->all(); // [1, 5, 9, 13, 17]
flatMap()
flatMap
方法遍历集合并将其中的每个值传递到给定的回调函数。可以通过回调函数修改集合项并返回它们,从而形成一个被修改过的新集合。然后,集合转化的数组是同级的:$collection = collect([ [ 'name' => 'John Doe', 'department' => 'Sales', ], [ 'name' => 'Jane Doe', 'department' => 'Sales', ], [ 'name' => 'Johnny Doe', 'department' => 'Marketing', ] ]); $grouped = $collection->mapToGroups(function ($item, $key) { return [$item['department'] => $item['name']]; }); $grouped->toArray(); /* [ 'Sales' => ['John Doe', 'Jane Doe'], 'Marketing' => ['Johnny Doe'], ] */ $grouped->get('Sales')->all(); // ['John Doe', 'Jane Doe']
flatten()
flatten
方法将多维集合转为一维集合:$collection = collect([ [ 'name' => 'John', 'department' => 'Sales', 'email' => 'john@example.com' ], [ 'name' => 'Jane', 'department' => 'Marketing', 'email' => 'jane@example.com' ] ]); $keyed = $collection->mapWithKeys(function ($item) { return [$item['email'] => $item['name']]; }); $keyed->all(); /* [ 'john@example.com' => 'John', 'jane@example.com' => 'Jane', ] */
你可以选择性地传入「深度」参数:
$max = collect([['foo' => 10], ['foo' => 20]])->max('foo'); // 20 $max = collect([1, 2, 3, 4, 5])->max(); // 5
在这个例子里,调用
flatten
时不传入深度参数的话也会将嵌套数组转成一维的,然后返回['iPhone 6S', 'Apple', 'Galaxy S7', 'Samsung']
。传入深度参数能让你限制设置返回数组的层数。flip()
flip
方法将集合的键和对应的值进行互换:$median = collect([['foo' => 10], ['foo' => 10], ['foo' => 20], ['foo' => 40]])->median('foo'); // 15 $median = collect([1, 1, 2, 4])->median(); // 1.5
forget()
forget
方法将通过指定的键来移除集合中对应的内容:$collection = collect(['product_id' => 1, 'price' => 100]); $merged = $collection->merge(['price' => 200, 'discount' => false]); $merged->all(); // ['product_id' => 1, 'price' => 200, 'discount' => false]
{note} 与大多数集合的方法不同的是,
forget
不会返回修改后的新集合;它会直接修改原集合。forPage()
forPage
方法返回一个含有指定页码数集合项的新集合。这个方法接受页码数作为其第一个参数,每页显示的项数作为其第二个参数:$collection = collect(['Desk', 'Chair']); $merged = $collection->merge(['Bookcase', 'Door']); $merged->all(); // ['Desk', 'Chair', 'Bookcase', 'Door']
get()
get
方法返回指定键的集合项,如果该键在集合中不存在,则返回null
firstWhere
mengembalikan elemen pertama dalam koleksi yang mengandungi pasangan kunci/nilai yang ditentukan:$min = collect([['foo' => 10], ['foo' => 20]])->min('foo'); // 10 $min = collect([1, 2, 3, 4, 5])->min(); // 1
Anda juga boleh menggunakan operator untuk Memanggil kaedah
firstWhere
:$mode = collect([['foo' => 10], ['foo' => 10], ['foo' => 20], ['foo' => 40]])->mode('foo'); // [10] $mode = collect([1, 1, 2, 4])->mode(); // [1]
Seperti kaedah where
, anda boleh menghantar hujah kepada kaedahfirstWhere
. Dalam kes ini, kaedahfirstWhere
akan mengembalikan item koleksi pertama yang nilainya "benar" untuk kunci yang ditentukan:$collection = collect(['a', 'b', 'c', 'd', 'e', 'f']); $collection->nth(4); // ['a', 'e']
flatMap()
🎜flatMap
kaedah berulang melalui koleksi dan menghantar setiap nilai di dalamnya kepada A tertentu fungsi panggil balik. Anda boleh mengubah suai item koleksi dan mengembalikannya melalui fungsi panggil balik, dengan itu membentuk koleksi baharu yang diubah suai. Kemudian, tatasusunan yang ditukar oleh koleksi adalah pada tahap yang sama: 🎜$collection->nth(4, 1); // ['b', 'f']
🎜🎜🎜🎜🎜ratakan ()< /code>🎜 Kaedah ratakan
menukarkan koleksi berbilang dimensi kepada koleksi satu dimensi: 🎜$collection = collect(['product_id' => 1, 'name' => 'Desk', 'price' => 100, 'discount' => false]); $filtered = $collection->only(['product_id', 'name']); $filtered->all(); // ['product_id' => 1, 'name' => 'Desk']
🎜Anda boleh memilih parameter "depth": 🎜$collection = collect(['A', 'B', 'C']); $filtered = $collection->pad(5, 0); $filtered->all(); // ['A', 'B', 'C', 0, 0] $filtered = $collection->pad(-5, 0); $filtered->all(); // [0, 0, 'A', 'B', 'C']
🎜 Dalam contoh ini, panggilratakan
Jika parameter kedalaman tidak dimasukkan, tatasusunan bersarang akan ditukar kepada satu dimensi, dan kemudian['iPhone 6S', 'Apple', 'Galaxy S7', 'Samsung' akan dikembalikan
. Melepasi parameter kedalaman membolehkan anda mengehadkan bilangan tahap dalam tatasusunan yang dikembalikan. 🎜🎜🎜🎜🎜🎜flip()
🎜flip
Kaedah menukar kunci koleksi dengan nilai yang sepadan: 🎜$collection = collect([1, 2, 3, 4, 5, 6]); list($underThree, $equalOrAboveThree) = $collection->partition(function ($i) { return $i < 3; }); $underThree->all(); // [1, 2] $equalOrAboveThree->all(); // [3, 4, 5, 6]
🎜🎜🎜🎜🎜< code>forget() Kaedah 🎜forget
akan mengalih keluar kandungan yang sepadan daripada koleksi dengan kekunci yang ditentukan: 🎜$collection = collect([1, 2, 3]); $piped = $collection->pipe(function ($collection) { return $collection->sum(); }); // 6
🎜{note} dan kebanyakan koleksi perbezaannya ialah
🎜🎜🎜forget
tidak mengembalikan koleksi baharu yang diubah suai; ia secara langsung mengubah suai koleksi asal. 🎜🎜🎜forPage()
🎜 KaedahforPage
mengembalikan koleksi baharu yang mengandungi nombor halaman item koleksi yang ditentukan. Kaedah ini menerima nombor halaman sebagai parameter pertama dan bilangan item yang dipaparkan setiap halaman sebagai parameter kedua: 🎜$collection = collect([ ['product_id' => 'prod-100', 'name' => 'Desk'], ['product_id' => 'prod-200', 'name' => 'Chair'], ]); $plucked = $collection->pluck('name'); $plucked->all(); // ['Desk', 'Chair']
🎜🎜🎜🎜🎜get()
🎜 Kaedahget
mengembalikan item koleksi kunci yang ditentukan. Jika kunci tidak wujud dalam koleksi, ia akan kembali < code>null: 🎜$plucked = $collection->pluck('name', 'product_id'); $plucked->all(); // ['prod-100' => 'Desk', 'prod-200' => 'Chair']
🎜Anda boleh menghantar nilai lalai pilihan anda sebagai parameter kedua: 🎜$collection = collect([ ['brand' => 'Tesla', 'color' => 'red'], ['brand' => 'Pagani', 'color' => 'white'], ['brand' => 'Tesla', 'color' => 'black'], ['brand' => 'Pagani', 'color' => 'orange'], ]); $plucked = $collection->pluck('color', 'brand'); $plucked->all(); // ['Tesla' => 'black', 'Pagani' => 'orange']
🎜Anda juga boleh menghantar fungsi panggil balik sebagai nilai lalai. Jika kekunci yang ditentukan tidak wujud, hasil daripada fungsi panggil balik akan dikembalikan: 🎜$collection = collect([1, 2, 3, 4, 5]); $collection->pop(); // 5 $collection->all(); // [1, 2, 3, 4]
🎜🎜🎜🎜🎜🎜groupBy()
groupBy()
groupBy
方法根据指定键对集合项进行分组:$collection = collect([1, 2, 3, 4, 5]); $collection->prepend(0); $collection->all(); // [0, 1, 2, 3, 4, 5]
你可以传递一个回调函数用来代替一个字符串的
键
。这个回调函数应该返回你希望用来分组的键的值:$collection = collect(['one' => 1, 'two' => 2]); $collection->prepend(0, 'zero'); $collection->all(); // ['zero' => 0, 'one' => 1, 'two' => 2]
可以传递一个数组用于多重分组标准。每一个数组元素将对应多维数组内的相应级别:
$collection = collect(['product_id' => 'prod-100', 'name' => 'Desk']); $collection->pull('name'); // 'Desk' $collection->all(); // ['product_id' => 'prod-100']
has()
has
方法判断集合中是否存在指定键:$collection = collect([1, 2, 3, 4]); $collection->push(5); $collection->all(); // [1, 2, 3, 4, 5]
implode()
implode
方法用于合并集合项。其参数取决于集合项的类型。如果集合包含数组或对象,你应该传递你希望合并的属性的键,以及你希望放在值之间用来「拼接」的字符串:$collection = collect(['product_id' => 1, 'name' => 'Desk']); $collection->put('price', 100); $collection->all(); // ['product_id' => 1, 'name' => 'Desk', 'price' => 100]
如果集合中包含简单的字符串或数值,只需要传入「拼接」用的字符串作为该方法的唯一参数即可:
$collection = collect([1, 2, 3, 4, 5]); $collection->random(); // 4 - (retrieved randomly)
intersect()
intersect
方法从原集合中移除在指定数组
或集合中不存在的任何值。生成的集合将会保留原集合的键:$random = $collection->random(3); $random->all(); // [2, 4, 5] - (retrieved randomly)
intersectByKeys()
intersectByKeys
方法从原集合中移除在指定数组
或集合中不存在的任何键:$collection = collect([1, 2, 3]); $total = $collection->reduce(function ($carry, $item) { return $carry + $item; }); // 6
isEmpty()
如果集合为空,
isEmpty
方法返回true
,否则,返回false
:$collection->reduce(function ($carry, $item) { return $carry + $item;}, 4); // 10
isNotEmpty()
如果集合不为空,
isNotEmpty
方法返回true
,否则,返回false
:$collection = collect([1, 2, 3, 4]); $filtered = $collection->reject(function ($value, $key) { return $value > 2; }); $filtered->all(); // [1, 2]
keyBy()
keyBy
方法以指定的键作为集合的键。如果多个集合项具有相同的键,则只有最后一个集合项会显示在新集合中:$collection = collect(['a', 'b', 'c', 'd', 'e']); $reversed = $collection->reverse(); $reversed->all(); /* [ 4 => 'e', 3 => 'd', 2 => 'c', 1 => 'b', 0 => 'a', ] */
你还可以在这个方法传递一个回调函数。该回调函数返回的值会作为该集合的键:
$collection = collect([2, 4, 6, 8]); $collection->search(4); // 1
keys()
keys
groupBy
kaedah mengumpulkan item koleksi mengikut kekunci yang ditentukan:$collection->search('4', true); // false
Anda boleh menghantar fungsi panggil balik dan bukannya rentetan
kunci. Fungsi panggil balik ini harus mengembalikan nilai kunci yang anda ingin kumpulkan mengikut: $collection->search(function ($item, $key) { return $item > 5; }); // 2
Tatasusunan boleh diluluskan untuk berbilang kriteria pengumpulan. Setiap elemen tatasusunan akan sepadan dengan tahap yang sepadan dalam tatasusunan berbilang dimensi:$collection = collect([1, 2, 3, 4, 5]); $collection->shift(); // 1 $collection->all(); // [2, 3, 4, 5]
🎜🎜🎜has ( )
🎜mempunyai
kaedah menentukan sama ada kunci yang ditentukan wujud dalam koleksi: 🎜$collection = collect([1, 2, 3, 4, 5]); $shuffled = $collection->shuffle(); $shuffled->all(); // [3, 2, 5, 1, 4] - (generated randomly)
🎜🎜🎜🎜🎜implode()
🎜implode
kaedah digunakan untuk menggabungkan item koleksi. Parameternya bergantung pada jenis item koleksi. Jika koleksi mengandungi tatasusunan atau objek, anda harus lulus kekunci sifat yang ingin anda gabungkan dan rentetan yang anda ingin letakkan di antara nilai untuk "menyambung" mereka: 🎜$collection = collect([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]); $slice = $collection->slice(4); $slice->all(); // [5, 6, 7, 8, 9, 10]
🎜 Jika koleksi mengandungi rentetan atau nombor mudah , cuma Anda perlu memasukkan rentetan yang digunakan untuk "splicing" sebagai satu-satunya parameter kaedah ini: 🎜$slice = $collection->slice(4, 2); $slice->all(); // [5, 6]
🎜🎜🎜🎜 Kaedah 🎜intersect()
🎜intersect
mengalih keluar daripada koleksi asal sebarang nilai yang tidak wujud dalamarray< yang ditentukan /kod> atau koleksi. Set yang dijana akan mengekalkan kunci set asal: 🎜
$collection = collect([5, 3, 1, 2, 4]); $sorted = $collection->sort(); $sorted->values()->all(); // [1, 2, 3, 4, 5]
🎜🎜🎜🎜🎜intersectByKeys() < /code> Kaedah 🎜
intersectByKeys
mengalih keluar sebarang kunci daripada koleksi asal yang tidak wujud dalamarray
atau koleksi yang ditentukan: 🎜$collection = collect([ ['name' => 'Desk', 'price' => 200], ['name' => 'Chair', 'price' => 100], ['name' => 'Bookcase', 'price' => 150], ]); $sorted = $collection->sortBy('price');$sorted->values()->all(); /* [ ['name' => 'Chair', 'price' => 100], ['name' => 'Bookcase', 'price' => 150], ['name' => 'Desk', 'price' => 200], ] */
🎜🎜🎜 🎜🎜isEmpty()
🎜Jika koleksi kosong,kaedah isEmpty code> mengembalikan
true
, jika tidak, mengembalikanfalse
: 🎜$collection = collect([ ['name' => 'Desk', 'colors' => ['Black', 'Mahogany']], ['name' => 'Chair', 'colors' => ['Black']], ['name' => 'Bookcase', 'colors' => ['Red', 'Beige', 'Brown']], ]); $sorted = $collection->sortBy(function ($product, $key) { return count($product['colors']); }); $sorted->values()->all(); /* [ ['name' => 'Chair', 'colors' => ['Black']], ['name' => 'Desk', 'colors' => ['Black', 'Mahogany']], ['name' => 'Bookcase', 'colors' => ['Red', 'Beige', 'Brown']], ] */
🎜🎜🎜🎜🎜isNotEmpty()
🎜Jika koleksi tidak kosong, kaedahisNotEmpty
mengembalikantrue
, jika tidak, mengembalikanfalse
:🎜$collection = collect([ 'id' => 22345, 'first' => 'John', 'last' => 'Doe', ]); $sorted = $collection->sortKeys();$sorted->all(); /* [ 'first' => 'John', 'id' => 22345, 'last' => 'Doe', ] */
🎜🎜🎜🎜🎜keyBy ()
🎜keyBy
kaedah menggunakan kunci yang ditentukan sebagai kunci koleksi. Jika berbilang item koleksi mempunyai kunci yang sama, hanya item koleksi terakhir akan dipaparkan dalam koleksi baharu: 🎜$collection = collect([1, 2, 3, 4, 5]); $chunk = $collection->splice(2); $chunk->all(); // [3, 4, 5] $collection->all(); // [1, 2]
🎜 Anda juga boleh menghantar fungsi panggil balik dalam kaedah ini. Nilai yang dikembalikan oleh fungsi panggil balik ini akan digunakan sebagai kunci koleksi: 🎜$collection = collect([1, 2, 3, 4, 5]); $chunk = $collection->splice(2, 1); $chunk->all(); // [3] $collection->all(); // [1, 2, 4, 5]
🎜🎜🎜🎜🎜< kod>kunci( )🎜kunci kaedah mengembalikan semua kunci dalam koleksi: 🎜 $collection = collect([1, 2, 3, 4, 5]); $chunk = $collection->splice(2, 1, [10, 11]); $chunk->all(); // [3] $collection->all(); // [1, 2, 10, 11, 4, 5]
🎜🎜🎜🎜🎜🎜Kaedahlast()
last()
last
方法返回集合中通过指定条件测试的最后一个元素:$collection = collect([1, 2, 3, 4, 5]); $groups = $collection->split(3); $groups->toArray(); // [[1, 2], [3, 4], [5]]
你也可以不传入参数调用
last
方法来获取集合中的最后一个元素。如果集合为空,则返回null
:collect([1, 2, 3, 4, 5])->sum(); // 15
macro()
静态
macro
方法允许你在运行时将方法添加至Collection
类。关于更多信息,请参阅 扩展集合 的文档。make()
静态
make
方法可以创建一个新的集合实例。请参阅 创建集合 部分。map()
map
方法遍历集合并将每一个值传入给定的回调函数。该回调函数可以任意修改集合项并返回,从而生成被修改过集合项的新集合:$collection = collect([ ['name' => 'JavaScript: The Good Parts', 'pages' => 176], ['name' => 'JavaScript: The Definitive Guide', 'pages' => 1096], ]); $collection->sum('pages'); // 1272
{note} 与其它大多数集合方法一样,
map
会返回一个新的集合实例;它不会修改原集合。如果你想修改原集合,请使用transform
方法。mapInto()
mapInto()
方法可以迭代集合,通过将值传递给构造函数来创建给定类的新实例:$collection = collect([ ['name' => 'Chair', 'colors' => ['Black']], ['name' => 'Desk', 'colors' => ['Black', 'Mahogany']], ['name' => 'Bookcase', 'colors' => ['Red', 'Beige', 'Brown']], ]); $collection->sum(function ($product) { return count($product['colors']); }); // 6
mapSpread()
mapSpread
方法可以遍历集合项,将每个嵌套项值给指定的回调函数。该回调函数可以自由修改该集合项并返回,从而生成被修改过集合项的新集合:$collection = collect([0, 1, 2, 3, 4, 5]); $chunk = $collection->take(3); $chunk->all(); // [0, 1, 2]
mapToGroups()
mapToGroups
方法通过给定的回调函数对集合项进行分组。该回调函数应该返回一个包含单个键 / 值对的关联数组,从而生成一个分组值的新集合:$collection = collect([0, 1, 2, 3, 4, 5]); $chunk = $collection->take(-2); $chunk->all(); // [4, 5]
mapWithKeys()
mapWithKeys
方法遍历集合并将每个值传入给定的回调函数。该回调函数将返回一个包含单个键 / 值对的关联数组:collect([2, 4, 3, 1, 5]) ->sort() ->tap(function ($collection) { Log::debug('Values after sorting', $collection->values()->toArray()); }) ->shift(); // 1
max()
max
last
mengembalikan elemen terakhir dalam koleksi yang melepasi ujian keadaan yang ditentukan:$collection = Collection::times(10, function ($number) { return $number * 9; }); $collection->all(); // [9, 18, 27, 36, 45, 54, 63, 72, 81, 90]
Anda juga boleh memanggil
last
untuk mendapatkan elemen terakhir dalam koleksi. Jika koleksi kosong, kembalikannull
:$categories = Collection::times(3, function ($number) { return factory(Category::class)->create(['name' => "Category No. $number"]); }); $categories->all(); /* [ ['id' => 1, 'name' => 'Category #1'], ['id' => 2, 'name' => 'Category #2'], ['id' => 3, 'name' => 'Category #3'], ] */
🎜makro()🎜Kaedah makro
statik membolehkan anda menambah kaedah pada kelasKoleksi
semasa masa jalan. Untuk mendapatkan maklumat lanjut, lihat dokumentasi untuk melanjutkan koleksi 🎜. 🎜🎜🎜🎜🎜🎜make()
🎜statikKaedah make mencipta contoh koleksi baharu. Lihat bahagian Mencipta Koleksi 🎜. 🎜🎜🎜🎜 🎜🎜peta()🎜 peta Kaedah berulang melalui koleksi dan menghantar setiap nilai ke dalam fungsi panggil balik yang diberikan. Fungsi panggil balik ini boleh mengubah suai item koleksi dan pemulangan secara sewenang-wenangnya, dengan itu menghasilkan koleksi baharu item koleksi yang diubah suai: 🎜 $collection = collect(['name' => 'Desk', 'price' => 200]); $collection->toArray(); /* [ ['name' => 'Desk', 'price' => 200], ] */
🎜{note} Seperti kebanyakan kaedah pengumpulan lain,
🎜🎜🎜map
akan mengembalikan A baru contoh koleksi; ia tidak mengubah suai koleksi asal. Jika anda ingin mengubah suai koleksi asal, sila gunakan kaedahtransform
🎜. 🎜🎜🎜mapInto()
🎜 KaedahmapInto()
boleh berulang pada koleksi, mencipta kejadian baharu kelas tertentu dengan menghantar nilai kepada pembina: 🎜$collection = collect(['name' => 'Desk', 'price' => 200]); $collection->toJson(); // '{"name":"Desk", "price":200}'
🎜🎜🎜< div name= "e1f874" data-unique="e1f874">🎜🎜mapSpread()
🎜mapSpread
kaedah boleh melintasi item koleksi dan memberikan nilai setiap item bersarang ke Fungsi panggil balik yang ditentukan. Fungsi panggil balik boleh mengubah suai item koleksi dan kembali secara bebas, dengan itu menghasilkan koleksi baharu item koleksi yang diubah suai: 🎜$collection = collect([1, 2, 3, 4, 5]); $collection->transform(function ($item, $key) { return $item * 2; }); $collection->all(); // [2, 4, 6, 8, 10]
🎜🎜🎜🎜🎜mapToGroups()
🎜mapToGroups
kaedah mengumpulkan item koleksi melalui fungsi panggil balik yang diberikan. Fungsi panggil balik harus mengembalikan tatasusunan bersekutu yang mengandungi pasangan kunci/nilai tunggal, menghasilkan koleksi nilai terkumpul baharu: 🎜$collection = collect([1 => ['a'], 2 => ['b']]); $union = $collection->union([3 => ['c'], 1 => ['b']]); $union->all(); // [1 => ['a'], 2 => ['b'], 3 => ['c']]
🎜🎜🎜🎜🎜mapWithKeys()
Kaedah 🎜mapWithKeys
berulang melalui koleksi dan menghantar setiap nilai ke dalam fungsi panggil balik yang diberikan. Fungsi panggil balik ini akan mengembalikan tatasusunan bersekutu yang mengandungi pasangan kunci/nilai tunggal: 🎜$collection = collect([1, 1, 2, 2, 3, 4, 2]); $unique = $collection->unique(); $unique->values()->all(); // [1, 2, 3, 4]
🎜🎜🎜🎜🎜max()🎜 max
kaedah mengembalikan nilai maksimum kunci yang ditentukan: 🎜$collection = collect([ ['name' => 'iPhone 6', 'brand' => 'Apple', 'type' => 'phone'], ['name' => 'iPhone 5', 'brand' => 'Apple', 'type' => 'phone'], ['name' => 'Apple Watch', 'brand' => 'Apple', 'type' => 'watch'], ['name' => 'Galaxy S6', 'brand' => 'Samsung', 'type' => 'phone'], ['name' => 'Galaxy Gear', 'brand' => 'Samsung', 'type' => 'watch'], ]); $unique = $collection->unique('brand'); $unique->values()->all(); /* [ ['name' => 'iPhone 6', 'brand' => 'Apple', 'type' => 'phone'], ['name' => 'Galaxy S6', 'brand' => 'Samsung', 'type' => 'phone'], ] */
🎜🎜🎜🎜🎜🎜median()
median()
median
方法返回指定键的 中值:$unique = $collection->unique(function ($item) { return $item['brand'].$item['type']; }); $unique->values()->all(); /* [ ['name' => 'iPhone 6', 'brand' => 'Apple', 'type' => 'phone'], ['name' => 'Apple Watch', 'brand' => 'Apple', 'type' => 'watch'], ['name' => 'Galaxy S6', 'brand' => 'Samsung', 'type' => 'phone'], ['name' => 'Galaxy Gear', 'brand' => 'Samsung', 'type' => 'watch'], ] */
merge()
merge
方法将合并指定的数组或集合到原集合。如果给定的集合项的字符串键与原集合中的字符串键相匹配,则指定集合项的值将覆盖原集合的值:$collection = collect([1, 2, 3]); $collection->unless(true, function ($collection) { return $collection->push(4); }); $collection->unless(false, function ($collection) { return $collection->push(5); }); $collection->all(); // [1, 2, 3, 5]
如果指定的集合项的键是数字,这些值将会追加到集合的末尾:
Collection::unwrap(collect('John Doe')); // ['John Doe']Collection::unwrap(['John Doe']); // ['John Doe']Collection::unwrap('John Doe'); // 'John Doe'
min()
min
方法返回指定键的最小值:$collection = collect([ 10 => ['product' => 'Desk', 'price' => 200], 11 => ['product' => 'Desk', 'price' => 200] ]); $values = $collection->values();$values->all(); /* [ 0 => ['product' => 'Desk', 'price' => 200], 1 => ['product' => 'Desk', 'price' => 200], ] */
mode()
mode
方法返回指定键的 众数 :$collection = collect([1, 2, 3]); $collection->when(true, function ($collection) { return $collection->push(4); }); $collection->when(false, function ($collection) { return $collection->push(5); }); $collection->all(); // [1, 2, 3, 4]
nth()
nth
方法创建由每隔 n 个元素组成的一个新集合:$collection = collect(['michael', 'tom']); $collection->whenEmpty(function ($collection) { return $collection->push('adam'); }); $collection->all(); // ['michael', 'tom'] $collection = collect();$collection->whenEmpty(function ($collection) { return $collection->push('adam'); }); $collection->all(); // ['adam'] $collection = collect(['michael', 'tom']); $collection->whenEmpty(function($collection) { return $collection->push('adam');}, function($collection) { return $collection->push('taylor'); }); $collection->all(); // ['michael', 'tom', 'taylor']
你可以选择传入一个偏移位置作为第二个参数:
$collection = collect(['michael', 'tom']); $collection->whenNotEmpty(function ($collection) { return $collection->push('adam'); }); $collection->all(); // ['michael', 'tom', 'adam'] $collection = collect(); $collection->whenNotEmpty(function ($collection) { return $collection->push('adam'); }); $collection->all(); // [] $collection = collect(); $collection->whenNotEmpty(function($collection) { return $collection->push('adam'); }, function($collection) { return $collection->push('taylor'); }); $collection->all(); // ['taylor']
only()
only
方法返回集合中所有指定键的集合项:$collection = collect([ ['product' => 'Desk', 'price' => 200], ['product' => 'Chair', 'price' => 100], ['product' => 'Bookcase', 'price' => 150], ['product' => 'Door', 'price' => 100], ]); $filtered = $collection->where('price', 100);$filtered->all(); /* [ ['product' => 'Chair', 'price' => 100], ['product' => 'Door', 'price' => 100], ] */
与
only
对应的是 except 方法。pad()
pad
方法将使用给定的值填充数组,直到数组达到指定的大小。该方法的行为与 array_pad PHP 函数功能类似。要填充到左侧,你应该使用负值。如果给定大小的绝对值小于或等于数组的长度,则不会发生填充:
$collection = collect([ ['product' => 'Desk', 'price' => 200], ['product' => 'Chair', 'price' => 80], ['product' => 'Bookcase', 'price' => 150], ['product' => 'Pencil', 'price' => 30], ['product' => 'Door', 'price' => 100], ]); $filtered = $collection->whereBetween('price', [100, 200]); $filtered->all(); /* [ ['product' => 'Desk', 'price' => 200], ['product' => 'Bookcase', 'price' => 150], ['product' => 'Door', 'price' => 100], ] */
partition()
partition
方法可以和 PHP 函数中的list
结合使用,用来分开通过指定条件的元素以及那些不通过指定条件的元素:$collection = collect([ ['product' => 'Desk', 'price' => 200], ['product' => 'Chair', 'price' => 100], ['product' => 'Bookcase', 'price' => 150], ['product' => 'Door', 'price' => 100], ]); $filtered = $collection->whereIn('price', [150, 200]); $filtered->all(); /* [ ['product' => 'Bookcase', 'price' => 150], ['product' => 'Desk', 'price' => 200], ] */
pipe()
pipe
方法将集合传给指定的回调函数并返回结果:$collection = collect([ new User, new User, new Post, ]); return $collection->whereInstanceOf(User::class);
pluck()
:pluck
median
kaedah mengembalikan untuk kunci yang ditentukan Nilai$collection = collect([ ['product' => 'Desk', 'price' => 200], ['product' => 'Chair', 'price' => 80], ['product' => 'Bookcase', 'price' => 150], ['product' => 'Pencil', 'price' => 30], ['product' => 'Door', 'price' => 100], ]); $filtered = $collection->whereNotBetween('price', [100, 200]); $filtered->all(); /* [ ['product' => 'Chair', 'price' => 80], ['product' => 'Pencil', 'price' => 30], ] */
merge()
Kaedahmerge
akan menggabungkan tatasusunan atau koleksi yang ditentukan ke dalam koleksi asal. Jika kunci rentetan item koleksi yang diberikan sepadan dengan kunci rentetan dalam koleksi asal, nilai item koleksi yang ditentukan akan menimpa nilai koleksi asal:$collection = collect([ ['product' => 'Desk', 'price' => 200], ['product' => 'Chair', 'price' => 100], ['product' => 'Bookcase', 'price' => 150], ['product' => 'Door', 'price' => 100], ]); $filtered = $collection->whereNotIn('price', [150, 200]); $filtered->all(); /* [ ['product' => 'Chair', 'price' => 100], ['product' => 'Door', 'price' => 100], ] */
Jika kunci item koleksi yang ditentukan ialah nombor, ini nilai akan ditambahkan pada penghujung koleksi:$collection = Collection::wrap('John Doe'); $collection->all(); // ['John Doe'] $collection = Collection::wrap(['John Doe']); $collection->all(); // ['John Doe'] $collection = Collection::wrap(collect('John Doe')); $collection->all(); // ['John Doe']
🎜🎜🎜🎜🎜min ()
< /h4>🎜min
kaedah mengembalikan nilai minimum kunci yang ditentukan: 🎜$collection = collect(['Chair', 'Desk']); $zipped = $collection->zip([100, 200]); $zipped->all(); // [['Chair', 100], ['Desk', 200]]
🎜🎜🎜🎜🎜mod()
🎜mod
kaedah mengembalikan Mod 🎜: 🎜$users = User::where('votes', '>', 500)->get(); $users->each->markAsVip();
🎜🎜🎜🎜🎜nth( )< /h4>🎜 nth
kaedah mencipta set baharu yang terdiri daripada setiap elemen ke-n: 🎜$users = User::where('group', 'Development')->get(); return $users->sum->votes;
🎜Anda boleh memilih untuk lulus dalam kedudukan offset sebagai parameter kedua: 🎜rrreee🎜< nama ="method-only">🎜🎜🎜🎜only()
🎜only
kaedah Mengembalikan semua item koleksi dengan kunci yang ditentukan dalam koleksi: 🎜rrreee🎜 danhanya sepadan dengan kaedah kecuali🎜. 🎜🎜🎜🎜 🎜🎜pad()
🎜pad Kaedah
akan mengisi tatasusunan dengan nilai yang diberikan sehingga tatasusunan mencapai saiz yang ditentukan. Kaedah ini berkelakuan serupa dengan array_pad🎜 fungsi PHP. 🎜🎜Untuk melapik ke kiri, anda harus menggunakan nilai negatif. Jika nilai mutlak saiz yang diberikan adalah kurang daripada atau sama dengan panjang tatasusunan, tiada padding akan berlaku: 🎜rrreee🎜🎜🎜🎜🎜partition()
🎜partition
kaedah boleh digunakan bersama denganlist
dalam fungsi PHP untuk memisahkan item yang melepasi elemen syarat yang ditentukan dan yang tidak melepasi syarat yang ditentukan: 🎜rrreee🎜🎜🎜🎜🎜 Kaedahpipe() code>🎜
pipe
menghantar koleksi kepada fungsi panggil balik yang ditentukan dan mengembalikan hasilnya: 🎜rrreee🎜 🎜🎜🎜🎜pluck()
🎜pluck
kaedah boleh mendapatkan semua nilai yang sepadan kepada kunci yang ditentukan dalam koleksi: 🎜rrreee🎜Anda juga Kunci set yang dijana boleh ditentukan dengan menghantar parameter kedua: 🎜rrreee🎜 Jika terdapat kekunci pendua, elemen padanan terakhir akan dimasukkan ke dalam set yang muncul: 🎜rrreee🎜🎜🎜🎜🎜🎜pop()
pop()
rrreeepop
方法从集合中移除并返回最后一个集合项:prepend()
rrreeeprepend
方法将指定的值添加的集合的开头:你也可以传递第二个参数来设置新增加集合项的键:
rrreeepull()
rrreeepull
方法把指定键对应的值从集合中移除并返回:push()
rrreeepush
方法把指定的值追加到集合项的末尾:put()
rrreeeput
方法在集合内设置给定的键值对:random()
rrreeerandom
方法从集合中返回一个随机项:你可以选择传入一个整数到
rrreeerandom
来指定要获取的随即项的数量。只要你显示传递你希望接收的数量时,则会返回项目的集合:如果集合的项小于指定的数量,则该方法将抛出
InvalidArgumentException
。reduce()
rrreeereduce
方法将每次迭代的结果传递给下一次迭代直到集合减少为单个值:第一次迭代时
rrreee$carry
的数值为null
; however,你也可以通过传入第二个参数到reduce
来指定它的初始值:reject()
rrreeereject
方法使用指定的回调函数过滤集合。如果回调函数返回true
就会把对应的集合项从集合中移除:与
reject
方法对应的是filter
方法。reverse()
rrreeereverse
pop
kaedah mengalih keluar daripada koleksi dan mengembalikan item koleksi terakhir:prepend()
prepend
kaedah menambah nilai yang ditentukan pada koleksi At permulaan: 🎜rrreee🎜Anda juga boleh lulus parameter kedua untuk menetapkan kunci item koleksi yang baru ditambah: 🎜rrreee🎜🎜🎜🎜🎜pull()
🎜 Kaedahpull
mengalih keluar nilai yang sepadan dengan kunci yang ditentukan daripada koleksi dan mengembalikan: 🎜rrreee🎜🎜🎜🎜🎜push()
🎜tolak
pemegang kaedah Nilai yang ditentukan dilampirkan pada penghujung item koleksi: 🎜rrreee🎜🎜🎜🎜🎜put() code>🎜
🎜 kaedahput
kaedah menetapkan pasangan nilai kunci yang diberikan dalam koleksi: 🎜rrreee🎜🎜🎜🎜🎜 rawak() rawak mengembalikan item rawak daripada koleksi: 🎜rrreee🎜Anda boleh memilih untuk menghantar integer ke rawak
menyatakan bilangan item rawak untuk diperoleh. Selagi anda melepasi kuantiti yang anda ingin terima secara eksplisit, koleksi item akan dikembalikan: 🎜rrreee🎜 Jika koleksi mempunyai kurang daripada bilangan item yang ditentukan, kaedah ini akan membuangInvalidArgumentException
. 🎜🎜🎜🎜🎜🎜reduce()
🎜reduce Kaedah
menghantar hasil setiap lelaran ke lelaran seterusnya sehingga set dikurangkan kepada satu nilai: 🎜rrreee🎜Nilai$carry
pada lelaran pertama ialahnull< /code >; Walau bagaimanapun, anda juga boleh menentukan nilai awalnya dengan menghantar parameter kedua untuk
reduce
: 🎜rrreee🎜🎜🎜🎜🎜reject()
🎜 Kaedahreject
menapis koleksi menggunakan fungsi panggil balik yang ditentukan. Jika fungsi panggil balik mengembalikantrue
, item koleksi yang sepadan akan dialih keluar daripada koleksi: 🎜rrreee🎜Yang sepadan dengan kaedahreject
ialahfilter
🎜. 🎜🎜🎜🎜🎜🎜reverse()
🎜reverse Kaedah
digunakan untuk membalikkan susunan item koleksi dan mengekalkan kunci asal: 🎜rrreee🎜🎜🎜🎜🎜🎜search()
search()
rrreeesearch
方法在集合中搜索给定的值并返回它的键。如果没有找到,则返回false
。使用 「宽松」的方式进行搜索,这意味着具有整数值的字符串会被认为等于相同值的整数。使用 「严格」的方式进行搜索,就传入
rrreeetrue
作为该方法的第二个参数:或者,你可以通过传递回调函数来搜索通过条件测试的第一个集合项:
rrreeeshift()
rrreeeshift
方法移除并返回集合的第一个集合项:shuffle()
rrreeeshuffle
方法随机打乱集合项:slice()
rrreeeslice
方法返回集合中给定索引开始后面的部分:如果你想限制返回内容的大小,可以将你期望的大小作为第二个参数传递到该方法:
rrreee默认情况下,返回的内容将会保留原始键。如果你不希望保留原始键,你可以使用
values
方法来重新建立索引。some()
contains
方法的别名。sort()
rrreeesort
方法对集合进行排序。排序后的集合会保留原数组的键,所以在这个例子我们将使用values
方法去把键重置为连续编号的索引:如果你有更高级的排序需求,可以通过自己的算法将回调函数传递到
sort
。请参阅 PHP 文档的uasort
,这是集合的sort
方法在底层所调用的。
rrreee{tip} 如果你需要对嵌套数组或对象进行排序,请参照
menggunakan pendekatan "santai" untuk mencari, yang bermaksud bahawa rentetan dengan nilai integer dianggap sama dengan integer dengan nilai yang sama. Untuk mencari dengan cara yang "ketat", lulussortBy
和sortByDesc
search
kaedah mencari koleksi untuk nilai tertentu dan mengembalikan kuncinya. Jika tidak ditemui,false
dikembalikan. rrreeetrue
sebagai parameter kedua kaedah:Sebagai alternatif, anda boleh lulus fungsi panggil balik untuk mencari koleksi pertama yang melepasi ujian keadaan Item: rrreee
🎜shift()
🎜< Kod kaedah >shift mengalih keluar dan mengembalikan item koleksi pertama koleksi: 🎜rrreee🎜🎜🎜🎜🎜 Kaedahshuffle()
🎜shuffle
secara rawak mengocok item koleksi: 🎜rrreee🎜🎜🎜🎜🎜slice()
🎜 kaedahslice
mengembalikan bahagian koleksi bermula pada indeks yang diberikan: 🎜 rrreee🎜 Jika anda ingin mengehadkan saiz kandungan yang dikembalikan, anda boleh menghantar saiz yang anda inginkan sebagai parameter kedua kepada kaedah ini: 🎜rrreee🎜Secara lalai, kandungan yang dikembalikan akan mengekalkan kunci asal. Jika anda tidak mahu menyimpan kunci asal, anda boleh menggunakan kaedahnilai
🎜 untuk mengindeks semula. 🎜🎜🎜🎜🎜🎜beberapa()🎜 mengandungi
🎜 Alias kaedah. 🎜🎜🎜🎜🎜🎜isih()🎜 isih Kaedah mengisih koleksi. Koleksi yang diisih akan mengekalkan kunci tatasusunan asal, jadi dalam contoh ini kita akan menggunakan kaedah nilai
🎜 untuk menetapkan semula kunci kepada indeks bernombor berturut-turut: 🎜rrreee🎜Jika anda mempunyai keperluan pengisihan yang lebih maju, anda boleh menghantar fungsi panggil balik untukisih dengan algoritma anda sendiri. Sila rujuk dokumentasi PHP untuk uasort
🎜 untuk ini Ia dipanggil di bahagian bawah dengan kaedahisih
koleksi. 🎜🎜{tip} Jika anda perlu mengisih tatasusunan atau objek bersarang, sila rujuk
sortBy
🎜 dansortByDesc
🎜. 🎜🎜🎜🎜🎜🎜🎜🎜sortBy()
sortBy()
rrreeesortBy
方法将根据指定键对集合进行排序。排序后的集合会保留原始数组的键,所以在这个例子中我们使用values
方法将键重置为连续编号的索引:你也可以传递你自己的回调函数用于决定如何对集合的值进行排序:
rrreeesortByDesc()
该方法与
sortBy
方法一样,但是会以相反的顺序来对集合进行排序。sortKeys()
rrreeesortKeys
方法通过底层关联数组的键来对集合进行排序:sortKeysDesc()
该方法与
sortKeys
方法一样,但是会以相反的顺序来对集合进行排序。splice()
rrreeesplice
方法移除并返回指定索引开始的集合项片段:你可以传递第二个参数用以限制被删除内容的大小:
rrreee此外,你可以传入含有新参数项的第三个参数来代替集合中删除的集合项:
rrreeesplit()
rrreeesplit
方法将集合按照给定的值拆分:sum()
rrreeesum
方法返回集合内所有项的和:如果集合包含嵌套数组或对象,则应该传入一个键来指定要进行求和的值:
rrreee另外,你可以传入自己的回调函数来决定要用集合中的哪些值进行求和:
rrreeetake()
rrreeetake
方法返回给定数量项的新集合:你也可以传递负整数从集合末尾获取指定数量的项:
rrreeetap()
untuk menetapkan semula kunci kepada indeks bernombor berturut-turut:tap
sortBy
kaedah akan mengisih koleksi berdasarkan kunci yang ditentukan. Koleksi yang diisih mengekalkan kunci tatasusunan asal, jadi dalam contoh ini kami menggunakan kaedahvalues
rrreee Anda juga boleh menghantar fungsi panggil balik anda sendiri yang menentukan cara mengisih nilai koleksi: rrreee
🎜🎜sortByDesc()
🎜Kaedah ini sama dengan kaedahsortBy
🎜, tetapi dalam susunan cara yang bertentangan untuk menyusun koleksi. 🎜🎜🎜🎜🎜🎜sortKeys()
🎜sortKeys
Kaedah mengisih koleksi mengikut kekunci tatasusunan bersekutu yang mendasari: 🎜rrreee🎜🎜🎜🎜🎜< code>sortKeysDesc()🎜Kaedah ini sama dengan kaedahsortKeys
🎜, tetapi ia akan memproses set dalam susunan terbalik Isih. 🎜🎜🎜🎜🎜🎜splice()
🎜splice Kaedah
mengalih keluar dan mengembalikan serpihan item koleksi bermula pada indeks yang ditentukan: 🎜rrreee🎜 Anda boleh lulus parameter kedua untuk mengehadkan saiz kandungan yang dipadam: 🎜rrreee🎜 Selain itu, anda boleh memasukkan item parameter baharu . Parameter ketiga untuk menggantikan item koleksi yang dipadamkan dalam koleksi: 🎜rrreee🎜🎜🎜🎜🎜split ( )
🎜split
kaedah membahagikan koleksi mengikut nilai yang diberikan: 🎜rrreee🎜🎜🎜🎜🎜sum()
🎜 kaedahsum
mengembalikan jumlah semua item dalam set: 🎜rrreee🎜Jika set mengandungi bersarang Jika anda mempunyai set tatasusunan atau objek, anda harus memasukkan kunci untuk menentukan nilai yang akan dijumlahkan: 🎜rrreee🎜 Sebagai alternatif, anda boleh meneruskan fungsi panggil balik anda sendiri untuk menentukan nilai dalam set itu untuk dijumlahkan: 🎜rrreee🎜< a name="method-take">🎜🎜🎜🎜take()
🎜ambil Kaedah mengembalikan koleksi baharu dengan bilangan item yang diberikan: 🎜rrreee🎜 Anda juga boleh menghantar integer negatif untuk mendapatkan bilangan item yang ditentukan dari penghujung koleksi: 🎜rrreee🎜🎜🎜 🎜🎜ketik()🎜 ketik kaedah menghantar fungsi panggil balik yang diberikan ke dalam koleksi, membolehkan anda "Ketik" koleksi pada titik tertentu dan melakukan operasi tertentu pada item koleksi tanpa menjejaskan koleksi itu sendiri: 🎜rrreee🎜🎜🎜🎜🎜🎜 times()
times()
静态
rrreeetimes
方法通过调用给定次数的回调函数来创建新集合:使用这个方法可以与工厂结合使用创建出 Eloquent 模型:
rrreeetoArray()
rrreeetoArray
方法将集合转换成 PHP数组
。如果集合的值是 Eloquent 模型,那也会被转换成数组:{note}
toArray
也会将所有集合的嵌套对象转换为数组。如果你想获取原数组,可以使用all
方法。toJson()
rrreeetoJson
方法将集合转换成 JSON 字符串:transform()
rrreeetransform
方法迭代集合并对每一个集合项调用给定的回调函数。而集合的内容也会被回调函数的返回值所取代:{note} 与大多数集合方法不同,
transform
会修改集合本身。如果你想创建新集合,可以使用map
方法。union()
rrreeeunion
方法将给定的数组添加到集合。如果给定的数组含有与原集合一样的键,则原集合的值不会被改变:unique()
rrreeeunique
方法返回集合中所有唯一项。返回的集合保留着原数组的键,所以在这个例子中,我们使用values
方法把键重置为连续编号的索引:在处理嵌套数组或对象时,你可以指定用于确定唯一性的键:
rrreee你也可以通过传递自己的回调函数来确定项的唯一性:
rrreeeunique
方法在检查项目值时使用「宽松」模式比较,意味着具有整数值的字符串将被视为等于相同值的整数。你可以使用uniqueStrict
方法做「严格」模式比较。uniqueStrict()
这个方法与
Gunakan kaedah ini bersama-sama dengan kilang Cipta model Eloquent:unique
Kaedahtimes
statik mencipta koleksi baharu dengan memanggil fungsi panggil balik beberapa kali tertentu: rrreeetoArray()
Kaedah 🎜toArray
menukar koleksi menjadiarray
PHP. Jika nilai koleksi ialah model Eloquent, itu juga akan ditukar kepada tatasusunan: 🎜rrreee🎜{note}
🎜🎜🎜toArray
juga akan menukar semua objek bersarang koleksi kepada tatasusunan. Jika anda ingin mendapatkan tatasusunan asal, anda boleh menggunakan kaedahsemua
🎜. 🎜🎜🎜toJson()
🎜 KaedahtoJson
menukar koleksi kepada rentetan JSON: 🎜rrreee🎜🎜🎜🎜🎜 < The code>transform()🎜transform
kaedah berulang pada koleksi dan memanggil fungsi panggil balik yang diberikan untuk setiap item koleksi. Kandungan koleksi juga akan digantikan dengan nilai pulangan fungsi panggil balik: 🎜rrreee🎜{note} Tidak seperti kebanyakan kaedah pengumpulan,
🎜🎜🎜transform
mengubah suai koleksi itu sendiri. Jika anda ingin membuat koleksi baharu, anda boleh menggunakan kaedahmap
🎜. 🎜🎜🎜union()
🎜 Kaedahunion
menambah tatasusunan yang diberikan pada koleksi. Jika tatasusunan yang diberikan mengandungi kunci yang sama seperti koleksi asal, nilai koleksi asal tidak akan diubah: 🎜rrreee🎜🎜🎜🎜🎜unik()🎜 kaedah unik mengembalikan semua item unik dalam koleksi. Koleksi yang dikembalikan mengekalkan kunci tatasusunan asal, jadi dalam contoh ini kita menggunakan kaedah values
🎜 untuk menetapkan semula kunci kepada indeks bernombor berturut-turut: 🎜 rrreee 🎜Apabila berurusan dengan tatasusunan atau objek bersarang, anda boleh menentukan kunci yang digunakan untuk menentukan keunikan: 🎜rrreee🎜Anda juga boleh menentukan keunikan item dengan menghantar fungsi panggil balik anda sendiri: 🎜rrreee🎜unik The code> kaedah menggunakan perbandingan mod "santai" apabila menyemak nilai item, bermakna rentetan dengan nilai integer akan dianggap sebagai integer yang sama dengan nilai yang sama. Anda boleh menggunakan kaedah uniqueStrict
🎜 untuk melakukan perbandingan mod "ketat". 🎜🎜🎜🎜🎜🎜uniqueStrict()
🎜Kaedah ini ialah sama seperti < a href="#method-unique">unique
🎜 Kaedah yang sama, bagaimanapun, semua nilai dibandingkan menggunakan mod "ketat". 🎜🎜🎜🎜🎜🎜🎜melainkan()
unless()
rrreeeunless
方法当传入的第一个参数不为true
的时候,将执行给定的回调函数:与
unless
对应的是when
方法。unlessEmpty()
whenNotEmpty
方法的别名。unlessNotEmpty()
whenEmpty
方法的别名。unwrap()
静态
rrreeeunwrap
方法返回集合内部的可用值:values()
rrreeevalues
方法返回键被重置为连续编号的新集合:when()
rrreeewhen
方法当传入的第一个参数为true
时,将执行给定的回调函数:与
when
对应的是unless
方法。whenEmpty()
rrreeewhenEmpty
方法当集合为空时,将执行给定的回调函数:与
whenEmpty
对应的是whenNotEmpty
方法。whenNotEmpty()
rrreeewhenNotEmpty
方法当集合不为空时,将执行给定的回调函数:与
whenNotEmpty
对应的是whenEmpty
方法。where()
rrreeewhere
方法通过给定的键 / 值对过滤集合:where
方法在检查集合项值时使用「宽松」模式比较,这意味着具有整数值的字符串会被认为等于相同值的整数。你可以使用whereStrict
方法进行「严格」模式比较。
danwhereStrict()
melainkan
sepadan dengan kaedahbila
🎜unlessEmpty()
🎜whenNotEmpty
🎜 Alias untuk kaedah tersebut. 🎜🎜🎜🎜🎜🎜unlessNotEmpty()
🎜whenEmpty
🎜 Alias untuk kaedah tersebut. 🎜🎜🎜🎜🎜🎜unwrap()
🎜statikKaedah unwrap mengembalikan nilai yang tersedia di dalam koleksi: 🎜rrreee🎜🎜🎜 🎜🎜< code>values( )🎜values
kaedah mengembalikan koleksi baharu dengan kunci ditetapkan semula kepada nombor berturut-turut: 🎜rrreee🎜🎜🎜< div name= "25703b" data-unique="25703b">🎜🎜when()
🎜bila
kaedah apabila parameter pertama dihantar ialahbenar
, fungsi panggil balik yang diberikan akan dilaksanakan: 🎜rrreee🎜 danbila
sepadan dengan kaedahmelainkan
🎜 . 🎜🎜🎜🎜🎜🎜whenEmpty()
🎜whenEmpty Kaedah
akan melaksanakan fungsi panggil balik yang diberikan apabila koleksi kosong: 🎜rrreee🎜 sepadan denganwhenEmpty
ialahwhenNotEmpty< /code> 🎜 kaedah. 🎜🎜🎜🎜
🎜🎜whenNotEmpty()
🎜whenNotEmpty Kaedah
akan melaksanakan fungsi panggil balik yang diberikan apabila koleksi tidak kosong: 🎜rrreee🎜 sepadan denganwhenNotEmpty
ialahwhenEmpty
🎜 kaedah. 🎜🎜🎜🎜🎜🎜where()
🎜where Kaedah
menapis koleksi mengikut pasangan kunci/nilai yang diberikan: 🎜rrreee🎜di mana kaedah menggunakan perbandingan mod "santai" semasa menyemak nilai item koleksi, yang bermaksud rentetan dengan nilai integer Integer akan dipertimbangkan sama dengan nilai yang sama. Anda boleh menggunakan kaedah whereStrict
🎜 untuk melakukan perbandingan mod "ketat". 🎜🎜🎜🎜🎜🎜whereStrict()
🎜Kaedah ini ialah sama seperti < a href="#method-where">where
🎜 Kaedahnya adalah serupa; 🎜🎜🎜🎜🎜🎜🎜KaedahwhereBetween()
whereBetween()
rrreeewhereBetween
方法会用给定的范围对集合进行过滤:whereIn()
rrreeewhereIn
会根据包含给定数组的键 / 值对来过滤集合:whereIn
方法使用「宽松」的比较来检查集合项的值,这意味着具有整数值的字符串会被视为等于相同值的整数。你可以使用whereInStrict
方法进行「严格」模式比较。whereInStrict()
这个方法与
whereIn
方法类似;不同的是会使用「严格」模式进行比较。whereInstanceOf()
rrreeewhereInstanceOf
方法根据指定的类来过滤集合:whereNotBetween()
rrreeewhereNotBetween
方法在指定的范围内过滤集合:whereNotIn()
rrreeewhereNotIn
方法根据通过指定的键和不含有指定数组的值来对集合进行过滤:whereNotIn
方法使用「宽松」模式比较来检查集合项的值,这意味着具有整数值的字符串将被视为等于相同值的整数。你可以使用whereNotInStrict
方法做 「严格」模式比较。whereNotInStrict()
这个方法与
whereNotIn
方法类似;不同的是会使用 「严格」模式作比较。wrap()
静态
rrreeewrap
方法在适当的情况下将指定的值放在集合中:zip()
rrreeezip
whereBetween
akan menapis koleksi menggunakan julat yang diberikan:< div name="5b24c1" data-unique="5b24c1">
whereIn()
whereIn
akan berdasarkan pada kunci yang mengandungi tatasusunan yang diberikan/ Pasangan nilai untuk menapis koleksi: 🎜rrreee🎜 KaedahwhereIn
menggunakan perbandingan "santai" untuk menyemak nilai item koleksi, yang bermaksud bahawa rentetan dengan nilai integer dianggap sebagai integer sama dengan nilai yang sama. Anda boleh menggunakan kaedahwhereInStrict
🎜 untuk perbandingan mod "ketat". 🎜🎜🎜🎜🎜🎜whereInStrict()
🎜Kaedah ini ialah sama seperti < a href="#method-wherein">whereIn
🎜 Kaedahnya serupa; 🎜🎜🎜🎜🎜🎜whereInstanceOf()
🎜whereInstanceOf
Kaedah untuk menapis koleksi berdasarkan kelas yang ditentukan: 🎜rrreee🎜🎜🎜🎜🎜whereNotBetween( )
🎜whereNotBetween
kaedah menapis koleksi dalam julat yang ditentukan: 🎜rrreee🎜🎜🎜🎜🎜whereNotIn()
🎜whereNotIn
kaedah menapis koleksi berdasarkan kunci yang ditentukan dan nilai yang melakukan tidak mengandungi tatasusunan yang ditentukan :🎜rrreee🎜 KaedahwhereNotIn
menggunakan perbandingan mod "santai" untuk menyemak nilai item koleksi, yang bermaksud bahawa rentetan dengan nilai integer akan dianggap sebagai integer sama kepada nilai yang sama. Anda boleh menggunakan kaedahwhereNotInStrict
🎜 untuk melakukan perbandingan mod "ketat". 🎜🎜🎜🎜🎜🎜whereNotInStrict()
🎜Kaedah ini ialah sama seperti < a href="#method-wherenotin">whereNotIn
🎜 Kaedahnya adalah serupa; 🎜🎜🎜🎜🎜🎜wrap()
🎜statikKaedah bungkus meletakkan nilai yang ditentukan dalam koleksi yang sesuai: 🎜rrreee🎜🎜🎜 🎜🎜< code>zip()🎜,zip
kaedah menggabungkan nilai tatasusunan yang ditentukan dengan nilai koleksi asal pada indeks yang sepadan: 🎜rrreee🎜🎜🎜🎜🎜 🎜Pemesejan Lanjutan
Koleksi juga menyediakan sokongan untuk "Pemesejan Lanjutan", yang merupakan koleksi pintasan untuk operasi biasa. Kaedah pengumpulan yang menyokong pemesejan peringkat tinggi ialah:
purata average
,avg
,contains
,each
,every
,filter
,first
,flatMap
,groupBy
,keyBy
,map
,max
,min
,partition
,reject
,some
,sortBy
,sortByDesc
,sum
, andunique
。每个高阶消息传递都能作为集合实例的动态的属性来访问。例如,使用
rrreeeeach
高阶消息传递在集合中的每个对象上调用一个方法:同样,我们可以使用
,sum
,pura mengandungi ,first
flatMap
🎜,groupBy
🎜,keyBy
🎜,map
🎜,max
🎜,min
🎜,partition
🎜,reject
🎜,some
🎜,sortBy
🎜,sortByDesc
🎜,sum
🎜 danunik🎜. 🎜🎜Setiap penghantaran mesej pesanan tinggi boleh diakses sebagai sifat dinamik contoh koleksi. Contohnya, gunakan setiap
pemesejan peringkat tinggi untuk memanggil kaedah pada setiap objek dalam koleksi: 🎜rrreee🎜Begitu juga, kami boleh menggunakansum
pemesejan peringkat tinggi untuk mengumpul pengguna Jumlah "undi" dalam koleksi: 🎜rrreee🎜Artikel ini pertama kali diterbitkan di laman web 🎜LearnKu.com🎜. 🎜🎜