获取集合的第一个、第二个、第三个元素。

7

我有这样一个集合:

Collection {#750 ▼
  #items: array:18 [18 => User {#691}
    19 => User {#696}
    20 => User {#701}
  ]
}

18、19、20应该有所不同

我尝试进行调用

 $collection->get(0);
 $collection->get(1);
 $collection->get(2);

但显然,它不起作用。

我找到了一个变通方法,使用shift返回第一个元素并将其从集合中删除。

 $el1 = $collection->shift();
 $el2 = $collection->shift();
 $el3 = $collection->shift();

但是在这种情况下,我的原始收藏已被破坏。

有什么想法我该怎么做?

4个回答

14
你可以使用 slice() 方法:
$collection->slice(0, 3)

slice方法返回从给定索引开始的集合的切片。如果您想限制返回的切片大小,请将所需大小作为第二个参数传递。


4

您可以使用values()来:

$collection = $collection->values();

然后你可以这样使用它:
 $collection->get(0);
 $collection->get(1);
 $collection->get(2);

1
@JuliatzindelToro,这个回答怎么比Joseph Silber 早两分钟发布的完全相同的代码和答案更好呢? - Alexey Mezenin
@AlexeyMezenin 我从一个块中获取我的列表,所以在那之后进行切片并不是很好。values 正是我所需要的。 - Juliatzin
@JuliatzindelToro,我在谈论Joseph Silber的回答,而不是我的。 - Alexey Mezenin
ooo. values() 刚刚被编辑过。第一个回答中有 foreach。 - Juliatzin
@JuliatzindelToro,不是的,Joseph 给了你两种方法。第二种方式和 Amit 的完全一样。点击“X 分钟前编辑”链接,你就可以看到原始答案。 - Alexey Mezenin
是的,你说得对。我想我只是看到了第一种方法来做它。 - Juliatzin

3
你可以通过循环遍历它们:
foreach ($collection as $element) {
    // use $element
}

或者您可以将键重置为按顺序索引:

$collection = $collection->values();

$element1 = $collection->get(0);
$element2 = $collection->get(1);
$element3 = $collection->get(2);

0

有很多方法可以访问这些值。例如,您可以通过调用以下方式获取键:

$keys = $collection->keys()

然后按您想要的顺序调用:

if (isset($keys[0])) $collection->get($keys[0]);


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接