gpt4 book ai didi

php - 什么是 Laravel 集合?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:56:29 24 4
gpt4 key购买 nike

什么是 Laravel 集合? PHP 数组和 Laravel 集合有什么区别?

集合似乎与数组非常相似。例如,通过 get() 方法检索的结果是一个数据集合。但是当我们想将它用作数组时,我们必须使用 toArray() 方法。为什么?

最佳答案

它基本上是 PHP 数组函数的 API 包装器。但它具有更多有利于数组处理的功能。

<强>1。避免牙套 hell

考虑这种情况,使用 at 5 个大括号:

 shuffle(shuffle(arsort(array_unique(array_merge($array1,$array2)))));

这是 hell ,如果数组有超过 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 函数的扩展方法,这些方法使用 array 的 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。许多有用的帮助程序旨在处理数组的键值类型,因此对开发应用程序非常有用。如:keyBy()where()isEmpty()isNotEmpty() 等。

此外,Collection 是可宏化的,这意味着您可以扩展 Collection API,使 Collection 更适合您的项目。

总而言之,Laravel 集合是我开发中强大的数组处理助手。

关于php - 什么是 Laravel 集合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41466295/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com