它基本上是 PHP 数组函数的 API 包装器。但它还有更多有利于数组处理的功能。
1.避免大括号地狱
用 5 个大括号来考虑这个案例:
shuffle(shuffle(arsort(array_unique(array_merge($array1,$array2)))));
这是地狱,如果数组有超过 10 个大括号,你最终可能会丢失大括号。但是,如果你使用 Collection,它可以替换为:
collect($array1)
->merge($array2)
->unique()
->sort()
->shuffle()
->shuffle()
这更具可读性、面向对象和流动思维。
2。统一API的使用
这是 PHP 原始 API 问题,您永远不知道数组应该在参数中的位置。他们只是不一致。例如:
array_walk ( $array , $callback );
array_map ( $callback , $array);
array_merge ( $array1 ,$array2 );// return a new array
array_push ($array1 ,$value); // not return a new array
Laravel Collect 只是提供一致的 API 让我的生活更轻松。
collect($array)
->each($callback)
->map($callback)
->merge($array2)
->push($value)
3.Collection API 处理键值数组更好
Laravel 专注于处理来自数据库的数据。所以很多情况都是键值数组的情况,而不是索引数组。所以 Laravel 集合有很多针对原始 PHP 函数的扩展方法,这些方法使用数组的 key 进行处理。例如:
$array=[
["id"=>1,"name"=>"Apple"],
["id"=>2,"name"=>"Banana"],
["id"=>1,"name"=>"Apple"],
["id"=>2,"name"=>"Banana"],
];
$result= collect($array)->unique("id");
结果将是:
Array
(
[0] => Array
(
[id] => 1
[name] => Apple
)
[1] => Array
(
[id] => 2
[name] => Banana
)
)
4.处理多层数组
大部分 PHP 原始数组 API 只处理数组的顶层。如果要处理数组的深层,代码可能会变得复杂得多。但是 Laravel 集合的很多 API 允许你访问数组的深层。
例如:
$array=[
["id"=>1,"product"=>['name'=>"Apple"]],
["id"=>2,"product"=>['name'=>"Watermelon"]],
["id"=>3,"product"=>['name'=>"Banana"]],
];
$result= collect($array)->sortBy("product.name");
结果将是:
Array
(
[0] => Array
(
[id] => 1
[product] => Array
(
[name] => Apple
)
)
[2] => Array
(
[id] => 3
[product] => Array
(
[name] => Banana
)
)
[1] => Array
(
[id] => 2
[product] => Array
(
[name] => Watermelon
)
)
)
5.原始 PHP 中更多缺少的数组助手
除此之外,Laravel 集合在每个新版本中都增加了许多非常有用的数组 API。许多有用的 Helper 旨在处理数组的键值类型,因此对于开发应用程序非常有用。比如:keyBy()、where()、isEmpty()、isNotEmpty()等等。
此外,Collection 是可宏的,这意味着您可以扩展 Collection API,使 Collection 更适合您的项目。
总而言之,Laravel 集合是我开发的强大的数组处理助手。