Метод map класса Arr
Метод map класса Arr применяется для преобразования всех элементов массива с помощью переданного замыкания. В качестве первого параметра передаётся исходный массив, вторым параметром - замыкание, которое получает значение и ключ элемента, а возвращает преобразованное значение. Метод возвращает новый массив с преобразованными элементами, сохраняя исходные ключи.
Синтаксис
<?php
use Illuminate\Support\Arr;
$res = Arr::map($array, $callback);
?>
Пример
Давайте преобразуем массив чисел, увеличив каждый элемент в два раза:
<?php
use Illuminate\Support\Arr;
$arr = [1, 2, 3, 4, 5];
$res = Arr::map($arr, function($value) {
return $value * 2;
});
print_r($res);
?>
Результат выполнения кода:
Array
(
[0] => 2
[1] => 4
[2] => 6
[3] => 8
[4] => 10
)
Пример
Давайте преобразуем ассоциативный массив, добавив префикс к значениям:
<?php
use Illuminate\Support\Arr;
$arr = ['a' => 'abc', 'b' => 'def', 'c' => 'ghi'];
$res = Arr::map($arr, function($value, $key) {
return $key . '_' . $value;
});
print_r($res);
?>
Результат выполнения кода:
Array
(
[a] => a_abc
[b] => b_def
[c] => c_ghi
)
Пример
Давайте преобразуем массив строк в их длины:
<?php
use Illuminate\Support\Arr;
$arr = ['abcde', 'article', 'user', 'category'];
$res = Arr::map($arr, function($value) {
return strlen($value);
});
print_r($res);
?>
Результат выполнения кода:
Array
(
[0] => 5
[1] => 7
[2] => 4
[3] => 8
)
Пример
Давайте используем map с данными из модели. Преобразуем массив пользователей, оставив только их имена с большой буквы:
<?php
use Illuminate\Support\Arr;
use App\Models\User;
$users = User::select('name')->limit(3)->get()->toArray();
$names = Arr::map($users, function($user) {
return ucfirst($user['name']);
});
print_r($names);
?>
Результат выполнения кода:
Array
(
[0] => John
[1] => Jane
[2] => Bob
)
Пример
Давайте преобразуем массив, обработав вложенные массивы:
<?php
use Illuminate\Support\Arr;
$arr = [
['id' => 1, 'value' => 10],
['id' => 2, 'value' => 20],
['id' => 3, 'value' => 30],
];
$res = Arr::map($arr, function($item) {
return $item['value'] * 1.5;
});
print_r($res);
?>
Результат выполнения кода:
Array
(
[0] => 15
[1] => 30
[2] => 45
)
Смотрите также
-
метод
map коллекций,
который преобразует элементы коллекции -
метод
get класса Arr,
который получает значение из массива по ключу -
метод
pluck класса Arr,
который извлекает значения по ключу -
метод
where класса Arr,
который фильтрует массив по условию