РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1000 of 1392 menu

Метод unique

Метод unique применяется к коллекции и возвращает новую коллекцию, содержащую только уникальные значения. При сравнении элементов используется строгое сравнение (===), поэтому значения разных типов считаются различными. Метод можно использовать как без параметров, так и с указанием ключа для сравнения.

Синтаксис

<?php $collection->unique($key = null); ?>

Пример 1

Давайте получим уникальные значения из простого массива:

<?php use Illuminate\Support\Collection; $collection = collect([1, 2, 2, 3, 3, 3, 4, 5, 5]); $res = $collection->unique(); echo $res->implode(', '); ?>

Результат выполнения кода:

"1, 2, 3, 4, 5"

Пример 2

Давайте применим метод к массиву строк с дубликатами:

<?php use Illuminate\Support\Collection; $collection = collect(['a', 'b', 'a', 'c', 'b', 'd']); $res = $collection->unique(); echo $res->implode(', '); ?>

Результат выполнения кода:

"a, b, c, d"

Пример 3

Давайте используем метод для массива объектов или ассоциативных массивов с указанием ключа для сравнения:

<?php use Illuminate\Support\Collection; $collection = collect([ ['id' => 1, 'name' => 'John'], ['id' => 2, 'name' => 'Jane'], ['id' => 1, 'name' => 'John'], ['id' => 3, 'name' => 'Bob'] ]); $res = $collection->unique('id'); foreach ($res as $item) { echo $item['id'] . ' => ' . $item['name'] . PHP_EOL; } ?>

Результат выполнения кода:

"1 => John" "2 => Jane" "3 => Bob"

Пример 4

Давайте применим метод с callback-функцией для кастомного сравнения:

<?php use Illuminate\Support\Collection; $collection = collect([1, 2, 3, 4, 5]); $res = $collection->unique(function ($item) { return $item % 2; }); echo $res->implode(', '); ?>

Результат выполнения кода:

"1, 2"

Пример 5

Давайте используем метод в реальной задаче с моделью User:

<?php use App\Models\User; use Illuminate\Support\Collection; $users = User::all(); $uniqueEmails = $users->unique('email'); foreach ($uniqueEmails as $user) { echo $user->email . PHP_EOL; } ?>

Результат выполнения кода:

"user1@example.com" "user2@example.com" "user3@example.com"

Смотрите также

  • метод filter,
    который фильтрует коллекцию по заданному условию
  • метод map,
    который преобразует каждый элемент коллекции
  • метод where,
    который фильтрует коллекцию по паре ключ-значение
  • метод first,
    который возвращает первый элемент коллекции
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить