gpt4 book ai didi

laravel - 如何访问 Laravel 集合中的第 n 个项目?

转载 作者:行者123 更新时间:2023-11-29 15:35:56 26 4
gpt4 key购买 nike

我想我故意提出重复的问题违反了所有规则......

other question有一个公认的答案。明明解决了提问者的问题,却没有回答标题的问题。

让我们从头开始 - first() 方法的实现大致如下:

foreach ($collection as $item)
return $item;

这显然比采用 $collection[0] 或使用其他建议的方法更可靠。

即使集合中有 20 个项目,也可能没有索引为 0 或索引 15 的项目。为了说明这个问题,让我们从文档中取出这个集合:

$collection = collect([
['product_id' => 'prod-100', 'name' => 'desk'],
['product_id' => 'prod-200', 'name' => 'chair'],
]);

$keyed = $collection->keyBy('product_id');

现在,我们有没有可靠的(最好是简洁的)方法来访问 $keyed 的第 n 项?

我自己的建议是:

$nth = $keyed->take($n)->last();

但是每当 $n > $keyed->count() 时,这都会给出错误的项目 ($keyed->last())。如果第 n 个项目存在,我们如何获取它;如果它不像 first() 的行为,我们如何获取 null

编辑

为了澄清这一点,让我们考虑一下这个集合:

$col = collect([
2 => 'a',
5 => 'b',
6 => 'c',
7 => 'd']);

第一项是$col->first()。如何获得第二个?

$col->nth(3) 应该返回 'c' (如果从 0 开始,则返回 'c' ,但这会与 first() 不一致)。 $col[3] 不起作用,它只会返回一个错误。

$col->nth(7) 应该返回 null 因为没有第七项,只有四项。 $col[7] 不起作用,它只会返回 'd'

您可以将问题改写为“如何获取 foreach 订单中的第 n 个项目?”如果对某些人来说更清楚的话。

最佳答案

我想更快、更节省内存的方法是使用 slice()方法:

$collection->slice($n, 1);

关于laravel - 如何访问 Laravel 集合中的第 n 个项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58236921/

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