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

Метод map класса ArrayCollection

Метод map принадлежит классу ArrayCollection и применяет переданную callback-функцию к каждому элементу коллекции. Метод возвращает новый экземпляр ArrayCollection с преобразованными значениями. Исходная коллекция при этом не изменяется. Первым параметром передаётся callback-функция, которая принимает значение элемента и возвращает новое значение.

Синтаксис

public function map(callable $func): static

Пример

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

<?php use DoctrineCommonCollectionsArrayCollection; $collection = new ArrayCollection([1, 2, 3, 4, 5]); $res = $collection->map(function ($value) { return $value * 2; }); print_r($res->toArray()); ?>

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

[2, 4, 6, 8, 10]

Пример

Давайте преобразуем строки коллекции в верхний регистр:

<?php use DoctrineCommonCollectionsArrayCollection; $collection = new ArrayCollection(['abcde', 'article', 'user', 'hello']); $res = $collection->map(function ($value) { return strtoupper($value); }); print_r($res->toArray()); ?>

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

["ABCDE", "ARTICLE", "USER", "HELLO"]

Пример

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

<?php use DoctrineCommonCollectionsArrayCollection; $collection = new ArrayCollection([1, 2, 3, 4, 5]); $res = $collection->map(function ($value) { return $value + 1; }); print_r($res->toArray()); print_r($collection->toArray()); ?>

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

[2, 3, 4, 5, 6] [1, 2, 3, 4, 5]

Пример

Давайте поработаем с коллекцией сущностей и преобразуем каждую сущность в строку:

<?php namespace AppEntity; class Article { private string $title; public function __construct(string $title) { $this->title = $title; } public function getTitle(): string { return $this->title; } } ?>

Теперь применим метод map к коллекции статей:

<?php namespace AppController; use AppEntityArticle; use DoctrineCommonCollectionsArrayCollection; $collection = new ArrayCollection([ new Article('article 1'), new Article('article 2'), new Article('article 3') ]); $res = $collection->map(function (Article $article) { return $article->getTitle(); }); print_r($res->toArray()); ?>

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

["article 1", "article 2", "article 3"]

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

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