2015-01-01 5 views

ответ

6

Самым простым способом, вероятно, будет сращивать его, например:

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

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

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

+0

Я получаю сообщение об ошибке. Нестатический метод Illuminate \ Support \ Collection :: splice() не следует вызывать статически, предполагая $ this из несовместимого контекста – rotaercz

+0

К сожалению, мой bad - должен быть '' -> '', а не '' :: ''. Я обновлю свой пример. –

+0

Пробовал это тоже. Я получаю. array_splice() ожидает, что параметр 2 длинный, объект задан – rotaercz

0

Выработать немного на ответ Иоиля:

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

Затем добавить $item по индексу $index:

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

или вообще:

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

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

Смежные вопросы