2022年12月7日

PHP Laravel,來談談 Collection (一): 介紹 Collection 與 10 種常用的方法

本篇為 PHP 系列

什麼是 Collection

Laravel Collection 底層主要的資料結構是 PHP Array,也就是陣列。但 Laravel 透過 Collection 類別,將陣列進行封裝後,提供了比單純的陣列更加流暢 (fluent) 及更便利的用法。

另一方面,在 Collection 的設計概念中,也借用了部分函式語言程式設計 (Functional Programming) 的想法,因此學習 Collection 也替開發者帶來不同的思維模式。

Collection 完整名稱: Illuminate\Support\Collection

先來看一個 Collection 的簡單應用:如何把 Array 中的每個值都乘以 2?

如果是傳統的陣列,可以這樣做:

$array = [1, 2, 3, 4];
for ($i = 0; $i < count($array); $i++) {
    $array[$i] = $array[$i] * 2;    
}

在陣列的範例中,開發者要自己處理迴圈的計數,也要自己取出值,乘以二後再寫回陣列。雖然不難,但有很多細節要留意。

而在 Collection 則可以這樣做:

$collection = collect([1, 2, 3, 4]);
$collection = $collection->map(function($value) {
    return $value * 2;
});

雖然以這兩個範例來說,程式碼的量差不多,但在 Collection 的範例中,開發者不用自己處理迴圈,也不用花心力在值的取出與寫入,可以更專注在實際要做的事情。