如何按索引将项目添加到 Laravel 雄辩收藏中


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 "转到数组中的索引 2,然后删除 0 个元素,然后插入我刚刚为您提供的这个元素"。

稍微阐述一下乔尔的回答:

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

然后在索引$index添加$item

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

或一般:

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

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