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

Метод matching

Метод matching класса ArrayCollection выполняет фильтрацию коллекции на основе объекта Criteria. Он возвращает новый экземпляр ArrayCollection, содержащий только те элементы, которые соответствуют условиям, переданным в критерии. Исходная коллекция при этом не изменяется. Метод принимает один обязательный параметр - объект Criteria, который описывает правила отбора элементов.

Синтаксис

$res = $collection->matching(Criteria $criteria);

Пример

Давайте создадим коллекцию чисел и отфильтруем только те элементы, которые больше 2:

<?php namespace AppController; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; use DoctrineCommonCollectionsArrayCollection; use DoctrineCommonCollectionsCriteria; class CollectionController extends AbstractController { public function index(): Response { $collection = new ArrayCollection([1, 2, 3, 4, 5]); $criteria = Criteria::create() ->where(Criteria::expr()->gt('value', 2)); $res = $collection->matching($criteria); return new Response(json_encode($res->toArray())); } } ?>

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

{"2":3,"3":4,"4":5}

Пример

Давайте отфильтруем коллекцию строк, оставив только элементы, содержащие подстроку 'abc':

<?php namespace AppController; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; use DoctrineCommonCollectionsArrayCollection; use DoctrineCommonCollectionsCriteria; class CollectionController extends AbstractController { public function index(): Response { $collection = new ArrayCollection(['abcde', 'article', 'user', 'hello', 'abc']); $criteria = Criteria::create() ->where(Criteria::expr()->contains('value', 'abc')); $res = $collection->matching($criteria); return new Response(json_encode($res->toArray())); } } ?>

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

{"0":"abcde","4":"abc"}

Пример

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

<?php namespace AppController; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; use DoctrineCommonCollectionsArrayCollection; use DoctrineCommonCollectionsCriteria; class CollectionController extends AbstractController { public function index(): Response { $collection = new ArrayCollection([1, 2, 3, 4, 5]); $criteria = Criteria::create() ->orderBy(['value' => 'DESC']) ->setMaxResults(2); $res = $collection->matching($criteria); return new Response(json_encode($res->toArray())); } } ?>

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

{"4":5,"3":4}

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

  • класс ArrayCollection,
    который представляет собой коллекцию элементов
  • класс Criteria,
    который задаёт критерии фильтрации
  • метод filter,
    который фильтрует коллекцию с помощью callback-функции
  • метод toArray,
    который преобразует коллекцию в массив
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить