Как я могу добавить элемент в Laravel Eloquent Collection по индексу?

Я попробовал следующее, но это не сработает.

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

Например, если $ collection выглядит так:

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

Я бы хотел в итоге:

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

Solutions Collecting From Web of "Как я могу добавить элемент в Laravel Eloquent Collection по индексу?"

Самый простой способ, вероятно, состоял бы в его объединении, например:

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

Коллекции обычно поддерживают ту же функциональность, что и обычные массивы PHP. В этом случае функция array_splice () используется за кулисами.

Установив второй параметр равным 0, вы по существу говорите PHP, чтобы «перейти к индексу 2 в массиве, а затем удалить 0 элементов, а затем вставить этот элемент, который я вам предоставил».

Чтобы немного разобраться с ответом Джоэля:

  • splice изменяет исходную коллекцию и возвращает извлеченные элементы
  • новый элемент приписывается массиву, если это не то, что мы хотим, мы должны обернуть его в массив

Затем, чтобы добавить $item в индекс $index :

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

или вообще:

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

где $number – количество элементов, которые мы хотим извлечь (и удалить) из оригинальной коллекции.