语句应该用作一种foreach
循环遍历集合并对其执行某种逻辑的方式。如果其中的内容影响程序中的其他内容,则使用此循环。
该.each
方法用于array_map
循环遍历集合中的每个对象并对每个对象执行闭包。然后它返回结果数组。那是关键!.each
如果您想以某种方式更改集合,则应使用。也许这是一系列汽车,您想让模型大写或小写。您只需将闭包传递给.each
获取对象并调用strtoupper()
每个 Car 对象的模型的方法。然后,它返回包含所做更改的集合。
故事的精神是这样的:使用.each
方法以某种方式改变数组中的每一项;使用foreach
循环来使用每个对象来影响程序的其他部分(使用一些逻辑语句)。
更新(2015 年 6 月 7 日)
正如下面所说的雄辩(看看我在那里做了什么?),上面的答案有点偏离。使用的.each
方法array_map
从未实际使用过array_map
调用的输出。因此,由创建的新数组array_map
不会保存在Collection
. 要更改它,您最好使用该.map
方法,该方法也存在于Collection
对象上。
使用foreach
语句对它们中的每一个进行迭代更有意义,因为除非您确保使用语句,否则您将无法访问闭包之外的变量use
,这对我来说似乎很尴尬。
可以在此处找到最初编写上述答案时的实现。
.each
在 Laravel 5.1 中
他们下面说的新.each
的不再使用array_map
。它只是遍历集合中的每个项目并调用传入的$callback
,将项目及其在数组中的键传递给它。从功能上讲,它似乎工作相同。我相信在阅读代码时使用foreach
循环会更有意义。但是,我看到了使用的好处,.each
因为它允许您将方法链接在一起,如果您喜欢的话。如果您的业务逻辑要求您能够这样做,它还允许您从回调中返回 false 以尽早离开循环。
有关新实现的更多信息,请查看源代码。