Метод splice
Метод splice применяется к коллекции Laravel и возвращает новый экземпляр коллекции, содержащий удалённые элементы. Первым параметром передаётся индекс, с которого начинается удаление, вторым - количество удаляемых элементов, третьим - массив элементов для вставки на место удалённых. Если второй параметр не указан, удаляются все элементы от указанного индекса до конца коллекции.
Синтаксис
<?php
$collection = collect($items);
$removed = $collection->splice($index, $count, $replacement);
?>
Пример
Давайте удалим два элемента, начиная с индекса 1:
<?php
use Illuminate\Support\Collection;
$collection = collect(['a', 'b', 'c', 'd', 'e']);
$removed = $collection->splice(1, 2);
echo "Removed elements: ";
print_r($removed->all());
echo "Original collection: ";
print_r($collection->all());
?>
Результат выполнения кода:
"Removed elements: [b, c]"
"Original collection: [a, d, e]"
Пример
Давайте удалим все элементы от индекса 2 до конца коллекции:
<?php
use Illuminate\Support\Collection;
$collection = collect(['a', 'b', 'c', 'd', 'e']);
$removed = $collection->splice(2);
echo "Removed elements: ";
print_r($removed->all());
echo "Original collection: ";
print_r($collection->all());
?>
Результат выполнения кода:
"Removed elements: [c, d, e]"
"Original collection: [a, b]"
Пример
Давайте удалим два элемента, начиная с индекса 1, и вставим на их место новые элементы:
<?php
use Illuminate\Support\Collection;
$collection = collect(['a', 'b', 'c', 'd', 'e']);
$removed = $collection->splice(1, 2, ['x', 'y']);
echo "Removed elements: ";
print_r($removed->all());
echo "Original collection: ";
print_r($collection->all());
?>
Результат выполнения кода:
"Removed elements: [b, c]"
"Original collection: [a, x, y, d, e]"
Пример
Давайте удалим элемент из ассоциативного массива по ключу:
<?php
use Illuminate\Support\Collection;
$collection = collect(['first' => 'a', 'second' => 'b', 'third' => 'c']);
$keys = $collection->keys();
$index = $keys->search('second');
$removed = $collection->splice($index, 1);
echo "Removed elements: ";
print_r($removed->all());
echo "Original collection: ";
print_r($collection->all());
?>
Результат выполнения кода:
"Removed elements: [second => b]"
"Original collection: [first => a, third => c]"