如何按索引将项目添加到 Laravel Eloquent 集合中?

How can I add an item into a Laravel Eloquent Collection by index?

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

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

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

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

我想结束:

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

最简单的方法可能是拼接它,像这样:

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

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

通过将第二个参数设置为 0,您实质上是将 PHP 告诉 "go to index 2 in the array, then remove 0 elements, then insert this element I just provided you with"。

详细说明 Joel 的回答:

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

然后在索引 $index 处添加 $item:

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

或者一般来说:

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

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