分享 10 個有用的 Laravel 5.8 集合輔助方法

文章轉發自專業的Laravel開發者社區,原始連接: https://learnku.com/laravel/t...

在 Laravel 中,有一個操做數組的很是好用的類,叫作集合。相信每一個 Laravel 的開發者都或多或少用過集合,尤爲是在操做的 Eloquent 的時候。在這篇文章中,我會列出 10 個經常使用的方法。php

1. 去重

duplicates 方法能夠檢索出集合中全部重複的值。返回的數組中會包含每一個值在原數組中的鍵。laravel

<?php
$collection = collect(['james', 'lisa', 'ryan', 'james', 'brad', 'lisa']);
$collection->duplicates(); // [3 => 'james', 5 => 'lisa']

2. 遍歷集合

在不使用  foreach 的狀況下也能夠遍歷集合,就是使用 each 方法。像一般的 foreach 方法同樣, each 方法也有兩個參數,分別是 itemkey數組

<?php
$collection->each(function ($item, $key) {
    // Do stuff
});

3. 調試輸出集合

當咱們在調試代碼的時候,常常須要輸出查看集合的內容。除了使用 dump($collection) 外,還可使用集合的 dump 方法,使用 dump 方法的好處是,輸出的內容看起來更加整潔清爽。dom

<?php
$collection = collect(['james', 'lisa', 'ryan']);
$collection->dump(); 
/*
Collection {
  #items: array:3 [
    0 => "james"
    1 => "lisa"
    2 => "ryan"
  ]
}
*/

若是你想要在輸出集合內容,而且打斷點,可使用 dd(輸出並終止)方法。函數

4. Has

has 方法能夠用來查看某個鍵是否存在於集合中。參數能夠是字符串,也能夠是數組。若是傳了數組做爲參數,那麼數組中全部的值都必須是集合中的鍵,結果才能返回 true,不然返回 false。spa

<?php
$collection = collect([
  'title' => 'Harry Potter', 
  'author' => 'J.K. Rowling', 
  'price' => 25
  ]);
$collection->has('author'); // true
$collection->has(['title', 'price']); // true
$collection->has(['price', 'rating']); // false

5. Implode

implode 方法能夠鏈接集合中的值。這個方法的做用跟 PHP 中的 implode 方法很是像。調試

<?php

$collection = collect([
    ['title' => 'Gift card', 'price' => 50],
    ['title' => 'Chair', 'price' => 80],
]);
$collection->implode('title', ', ');
// Gift card, Chair

若是集合中的值只是字符串,或數字,你只須要傳遞鏈接符做爲參數便可。code

<?php

$collection = collect([1,2,'foo',3,'bar']);
$collection->implode('-');
// 1-2-foo-3-bar

6. Push 與 Pull

可使用 push 方法將項目附加到集合的末尾。若是須要添加到集合的開頭,則可使用 prepend 方法。blog

<?php

$collection = collect([1, 2, 3]);
$collection->push(4);
$collection->all(); // [1, 2, 3, 4]

pull 方法將給定鍵從集合中移除並將返回其對應的值。排序

<?php

$collection = collect([
    'title' => 'Harry Potter',
    'author' => 'J.K. Rowling',
    'price' => 25
]);
$collection->pull('author'); // 'J.K. Rowling'
$collection->all(); // ['title' => 'Harry Potter', 'price' => 25]

7. Shuffle 方法

shuffle 方法將會隨機排序集合中的項目。

<?php

$collection = collect([1, 2, 3]);
$shuffled = $collection->shuffle();
$shuffled->all(); // [3, 1, 2] (random example)

8. Max 方法

您可使用 max 方法獲取集合中的最大值。若是集合中包含數組,則能夠傳遞參數以獲取某個鍵的最大值。

<?php

$max = collect([
    ['title' => 'Gift card', 'price' => 50],
    ['title' => 'Chair', 'price' => 80]
])->max('price'); // 80
$max = collect([1, 2, 3])->max(); // 3

9. Filter

可使用 filter 方法來過濾集合。這個方法接受一個回調函數做爲參數。在回調函數裏定義過濾的規則,只有符合規則的值才能被留在集合中。

<?php

$collection = collect([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);
$even_numbers = $collection->filter(function ($value, $key) {
    return $value % 2 == 0;
});
$even_numbers->all(); // [2, 4, 6, 8, 10]

10. Slice

slice 方法能夠用來分割集合,返回參數指定的索引位置及其以後的值,返回值的數組中會包含原數組的鍵。

注意,在下面的例子中,傳遞的參數是 2。意思是從索引 2 開始分割集合,而 不是 數組中的元素值 2。

<?php

$collection = collect([1, 2, 3, 4, 5]);
$sliced = $collection->slice(2);
$sliced->all(); // [3, 4, 5]
相關文章
相關標籤/搜索