Метод shift
Метод shift применяется к коллекции Laravel и возвращает первый элемент коллекции, одновременно удаляя его из неё. Если коллекция пуста, метод возвращает null. Метод полезен, когда нужно обработать элемент коллекции и исключить его из дальнейшего использования. После вызова метода размер коллекции уменьшается на один элемент.
Синтаксис
<?php
$res = $collection->shift();
?>
Пример
Давайте создадим коллекцию из чисел и извлечём первый элемент с помощью метода shift:
<?php
use Illuminate\Support\Collection;
$collection = new Collection([1, 2, 3, 4, 5]);
$res = $collection->shift();
echo $res;
echo "\n";
print_r($collection->all());
?>
Результат выполнения кода:
"1"
Array
(
[0] => 2
[1] => 3
[2] => 4
[3] => 5
)
Как видно из примера, метод вернул первый элемент (число 1), а сама коллекция теперь содержит только элементы [2, 3, 4, 5].
Пример
Рассмотрим работу метода shift с ассоциативным массивом:
<?php
use Illuminate\Support\Collection;
$collection = new Collection([
'id' => 1,
'name' => 'article',
'category' => 'tech'
]);
$res = $collection->shift();
echo $res;
echo "\n";
print_r($collection->all());
?>
Результат выполнения кода:
"1"
Array
(
[name] => article
[category] => tech
)
Метод вернул значение первого элемента по ключу 'id', а исходная коллекция потеряла этот элемент.
Пример
Давайте рассмотрим использование метода shift с коллекцией объектов:
<?php
use Illuminate\Support\Collection;
class User
{
public $name;
public $age;
public function __construct($name, $age)
{
$this->name = $name;
$this->age = $age;
}
}
$users = new Collection([
new User('user1', 25),
new User('user2', 30),
new User('user3', 22)
]);
$res = $users->shift();
echo $res->name . ' - ' . $res->age;
echo "\n";
echo "Remaining users: " . $users->count();
?>
Результат выполнения кода:
"user1 - 25"
"Remaining users: 2"
Пример
Важно помнить, что метод shift изменяет исходную коллекцию. Рассмотрим пример с пустой коллекцией:
<?php
use Illuminate\Support\Collection;
$collection = new Collection([]);
$res = $collection->shift();
var_dump($res);
echo "\n";
echo "Collection is empty: " . ($collection->isEmpty() ? 'true' : 'false');
?>
Результат выполнения кода:
"NULL"
"Collection is empty: true"