Метод diff
Метод diff применяется к коллекции и возвращает новую коллекцию,
содержащую элементы, которые есть в исходной коллекции,
но отсутствуют в переданной коллекции. Метод выполняет сравнение
на основе значений элементов. Первым и единственным параметром
передаётся коллекция или массив для сравнения.
Синтаксис
<?php
$collection->diff($items);
?>
Пример
Сравним две коллекции и получим элементы, которые есть в первой, но отсутствуют во второй:
<?php
use Illuminate\Support\Collection;
$collection = new Collection([1, 2, 3, 4, 5]);
$compare = new Collection([3, 4, 5, 6, 7]);
$res = $collection->diff($compare);
echo $res;
?>
Результат выполнения кода:
"[1, 2]"
Пример
При сравнении строковых значений, метод учитывает регистр символов:
<?php
use Illuminate\Support\Collection;
$collection = new Collection(['a', 'b', 'c', 'A', 'B']);
$compare = new Collection(['A', 'B', 'C']);
$res = $collection->diff($compare);
echo $res;
?>
Результат выполнения кода:
"['a', 'b', 'c']"
Пример
Метод diff также работает с ассоциативными массивами,
сравнивая только значения, но не ключи:
<?php
use Illuminate\Support\Collection;
$collection = new Collection([
'name' => 'user',
'email' => 'user@mail.com',
'role' => 'admin'
]);
$compare = new Collection([
'email' => 'user@mail.com',
'role' => 'user'
]);
$res = $collection->diff($compare);
echo $res;
?>
Результат выполнения кода:
"['name' => 'user', 'role' => 'admin']"
Пример
В качестве сравниваемых данных можно передать обычный массив, а не только коллекцию:
<?php
use Illuminate\Support\Collection;
$collection = new Collection(['a', 'b', 'c', 'd', 'e']);
$compare = ['c', 'd', 'e'];
$res = $collection->diff($compare);
echo $res;
?>
Результат выполнения кода:
"['a', 'b']"