什么是Laravel集合?PHP数组和Laravel集合有什么区别?
似乎集合与数组非常相似。例如,通过该get()方法检索的结果是数据的集合。但是,当我们要将其用作数组时,必须使用toArray()method。为什么?
cao*_*ish 10
它基本上是PHP数组函数的API包装器。但是它具有更多的功能,可以使数组处理受益。
1.避免撑地狱
认为这种情况有5个花括号:
shuffle(shuffle(arsort(array_unique(array_merge($array1,$array2)))));
Run Code Online (Sandbox Code Playgroud)
这真是太糟糕了,如果数组具有超过10个大括号,那么您最终可能会失去对大括号的跟踪。但是,如果使用Collection,则可以将其替换为:
collect($array1)
->merge($array2)
->unique()
->sort()
->shuffle()
->shuffle()
Run Code Online (Sandbox Code Playgroud)
这更具可读性,面向对象和流程思想。
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
Run Code Online (Sandbox Code Playgroud)
Laravel Collect只提供一致的API,使我的生活更轻松。
collect($array)
->each($callback)
->map($callback)
->merge($array2)
->push($value)
Run Code Online (Sandbox Code Playgroud)
3.Collection API处理键值数组更好
Laravel专注于处理数据库中的数据。因此,很多情况都是使用键值数组而不是索引数组。因此,Laravel集合针对原始PHP函数具有许多扩展方法,这些方法使用数组的键进行处理。例如:
$array=[
["id"=>1,"name"=>"Apple"],
["id"=>2,"name"=>"Banana"],
["id"=>1,"name"=>"Apple"],
["id"=>2,"name"=>"Banana"],
];
$result= collect($array)->unique("id");
Run Code Online (Sandbox Code Playgroud)
结果将是:
Array
(
[0] => Array
(
[id] => 1
[name] => Apple
)
[1] => Array
(
[id] => 2
[name] => Banana
)
)
Run Code Online (Sandbox Code Playgroud)
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");
Run Code Online (Sandbox Code Playgroud)
结果将是:
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
)
)
)
Run Code Online (Sandbox Code Playgroud)
5.原始PHP中缺少更多的数组助手
除上述内容外,Laravel集合在每个新版本中都增加了许多非常有用的数组API。设计了许多有用的Helper来处理数组的Key-Value类型,因此对于开发应用程序非常有用。像: keyBy(),where(),isEmpty(),isNotEmpty()等等。
此外,Collection是可宏化的,这意味着您可以扩展Collection API,使Collection更适合您的项目。
总而言之,Laravel集合是我开发中功能强大的数组处理助手。
集合是处理数据数组的方便包装器。集合拥有数组的所有便利,还有一堆自己的助手。
Illuminate\Support\Collection 类为处理数据数组提供了流畅、方便的包装器。如您所见,Collection 类允许您链接其方法以执行底层数组的流畅映射和减少。一般来说,集合是不可变的,这意味着每个 Collection 方法都会返回一个全新的 Collection 实例。
https://laravel.com/docs/5.3/collections
| 归档时间: |
|
| 查看次数: |
2502 次 |
| 最近记录: |