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

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

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

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

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

Я хотел бы закончить с:

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

4

Решение

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

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

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

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

8

Другие решения

Чтобы немного уточнить ответ Джоэла:

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

Потом добавить $item по указателю $index:

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

или вообще:

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

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

0

По вопросам рекламы [email protected]