如何通过索引将项目添加到Laravel Eloquent Collection中?

时间:2015-01-01 17:34:45

标签: php laravel collections eloquent

我尝试了以下但不起作用。

$index = 2;
$collection->put($index, $item4);

例如,如果$ collection看起来像这样:

$collection = [$item1, $item2, $item3];

我想结束:

$collection = [$item1, $item2, $item4, $item3];

2 个答案:

答案 0 :(得分:8)

最简单的方法可能就是拼接它,如下所示:

$collection->splice(2, 0, [$item4]);

集合通常支持与常规PHP数组相同的功能。在这种情况下,它是在幕后使用的array_splice()函数。

通过将第二个参数设置为0,您基本上告诉PHP“转到数组中的索引2,然后删除0个元素,然后插入我刚才提供的元素”。

答案 1 :(得分:0)

详细阐述乔尔的回答:

  • splice修改原始集合并返回提取的元素
  • 新项目被类型化为数组,如果这不是我们想要的,我们应该将它包装在数组

然后在索引$item添加$index

$collection->splice($index, 0, [$item]);

或一般:

$elements = $collection->splice($index, $number, [$item1, $item2, ...]);

其中$number是我们想要从原始集合中提取(和删除)的元素数量。