@enid
В Laravel есть несколько способов удаления дубликатов из коллекции. Рассмотрим несколько из них:
Метод unique() позволяет удалить дубликаты из коллекции на основе значения ключей.
1 2 3 4 5 |
$collection = collect([1, 2, 2, 3, 3, 3]); $unique = $collection->unique(); $unique->all(); // [1, 2, 3] |
Метод distinct() позволяет удалить дубликаты из коллекции на основе значения полей.
1 2 3 4 5 6 7 8 9 |
$collection = collect([ ['name' => 'John', 'age' => 20], ['name' => 'Jane', 'age' => 20], ['name' => 'James', 'age' => 25], ]); $unique = $collection->unique('age'); $unique->all(); // [['name' => 'John', 'age' => 20], ['name' => 'James', 'age' => 25]] |
Метод groupBy() позволяет группировать элементы коллекции по определенному полю, а метод keys() - получить ключи групп.
1 2 3 4 5 6 7 8 9 |
$collection = collect([ ['name' => 'John', 'age' => 20], ['name' => 'Jane', 'age' => 20], ['name' => 'James', 'age' => 25], ]); $unique = $collection->groupBy('age')->keys(); $unique->all(); // [20, 25] |
Метод reduce() позволяет пройтись по коллекции и с помощью функции обработки удалить дубликаты.
1 2 3 4 5 6 7 8 9 10 11 |
$collection = collect([1, 2, 2, 3, 3, 3]); $unique = $collection->reduce(function ($carry, $item) { if (!in_array($item, $carry)) { $carry[] = $item; } return $carry; }, []); $unique; // [1, 2, 3] |
Выберите метод, который подходит для вашей задачи.