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

Метод map

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

Синтаксис

<?php collect($items)->map($callback); ?>

В качестве параметра передаётся callback-функция:

<?php $res = collect([1, 2, 3, 4, 5]) ->map(function ($item, $key) { return $item * 2; }); ?>

Callback может использовать стрелочную функцию:

<?php $res = collect([1, 2, 3, 4, 5]) ->map(fn ($item) => $item * 2); ?>

Метод не изменяет исходную коллекцию, а возвращает новую.

Пример

Давайте преобразуем массив чисел, умножив каждое число на 2:

<?php use Illuminate\Support\Collection; $arr = [1, 2, 3, 4, 5]; $res = collect($arr)->map(function ($item) { return $item * 2; }); echo $res; ?>

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

[2, 4, 6, 8, 10]

Метод возвращает новую коллекцию, исходный массив не изменился.

Пример

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

<?php use Illuminate\Support\Collection; $arr = ['abcde', 'article', 'user', 'category']; $res = collect($arr)->map(function ($item) { return strlen($item); }); echo $res; ?>

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

[5, 7, 4, 8]

Callback-функция преобразует каждый элемент в его длину.

Пример

Давайте преобразуем массив чисел в массив строк с префиксом:

<?php use Illuminate\Support\Collection; $arr = [1, 2, 3, 4, 5]; $res = collect($arr)->map(function ($item) { return 'Number: ' . $item; }); echo $res; ?>

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

["Number: 1", "Number: 2", "Number: 3", "Number: 4", "Number: 5"]

Callback может возвращать значение любого типа, который затем попадает в результирующую коллекцию.

Пример

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

<?php use Illuminate\Support\Collection; $arr = [ 'first' => 'abcde', 'second' => 'article', 'third' => 'user' ]; $res = collect($arr)->map(function ($item, $key) { return $key . ' - ' . $item; }); echo $res; ?>

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

["first - abcde", "second - article", "third - user"]

Вторым параметром callback получает ключ элемента, что позволяет использовать его в преобразовании.

Пример

Давайте преобразуем коллекцию моделей Eloquent, извлекая определённые поля:

<?php namespace App\Http\Controllers; use App\Models\User; class UserController extends Controller { public function index() { $users = User::all(); $res = $users->map(function ($user) { return $user->name . ' (' . $user->email . ')'; }); return $res; } } ?>

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

[ "John Doe (john@example.com)", "Jane Smith (jane@example.com)", "Bob Johnson (bob@example.com)" ]

Метод map идеально подходит для трансформации данных перед их выводом или дальнейшей обработкой.

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

  • метод flatMap,
    который преобразует и разворачивает коллекцию
  • метод mapWithKeys,
    который преобразует коллекцию в ассоциативный массив
  • метод filter,
    который фильтрует коллекцию по условию
  • метод pluck,
    который извлекает значения определённого поля
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить