php array map recursive
(PHP 4 >= 4.0.6, PHP 5, PHP 7)
array_map — Применяет callback-функцию ко всем элементам указанных массивов
Описание
Список параметров
Callback-функция, применяемая к каждому элементу в каждом массиве.
Возвращаемые значения
Примеры
Пример #1 Пример использования array_map()
Пример #2 Использование array_map() вместе с lambda-функцией (начиная с версии PHP 5.3.0)
Пример #3 Пример использования array_map() : обработка нескольких массивов
Результат выполнения данного примера:
Обычно при обработке двух или более массивов, они имеют одинаковую длину, так как callback-функция применяется параллельно к соответствующим элементам массивов. Если массивы имеют различную длину, более короткие из них дополняется элементами с пустыми значениями до длины самого длинного массива.
Интересным эффектом при использовании этой функции является создание массива массивов, что может быть достигнуто путем использования значения NULL в качестве имени callback-функции.
Пример #4 Создание массива массивов
Результат выполнения данного примера:
Если массив-аргумент содержит строковые ключи, то результирующий массив будет содержать строковые ключи тогда и только тогда, если передан ровно один массив. Если передано больше одного аргумента, то результирующий массив будет всегда содержать числовые ключи.
Пример #5 Использование array_map() со строковыми ключами
Результат выполнения данного примера:
Смотрите также
array_map
(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)
array_map — Применяет callback-функцию ко всем элементам указанных массивов
Описание
Список параметров
Возвращаемые значения
Возвращённый массив сохранит ключи аргумента массива тогда и только тогда, когда будет передан ровно один массив. Если передано более одного массива, возвращённый массив будет иметь последовательные целочисленные ключи.
Примеры
Пример #1 Пример использования array_map()
Пример #2 Использование array_map() вместе с лямбда-функцией
Пример #3 Пример использования array_map() : обработка нескольких массивов
Результат выполнения данного примера:
Обычно при обработке двух или более массивов, они имеют одинаковую длину, так как callback-функция применяется параллельно к соответствующим элементам массивов. Если массивы имеют различную длину, более короткие из них дополняется элементами с пустыми значениями до длины самого длинного массива.
Интересным эффектом при использовании этой функции является создание массива массивов, что может быть достигнуто путём использования значения null в качестве имени callback-функции.
Пример #4 Выполнение zip операции с массивами
Результат выполнения данного примера:
Пример #5 null callback только с array
Результат выполнения данного примера:
Пример #6 Использование array_map() со строковыми ключами
Результат выполнения данного примера:
Результат выполнения данного примера:
Смотрите также
User Contributed Notes 6 notes
Let’s assume we have following situation:
You may be looking for a method to extract values of a multidimensional array on a conditional basis (i.e. a mixture between array_map and array_filter) other than a for/foreach loop. If so, you can take advantage of the fact that 1) the callback method on array_map returns null if no explicit return value is specified (as with everything else) and 2) array_filter with no arguments removes falsy values.
So for example, provided you have:
To transpose rectangular two-dimension array, use the following code:
If you need to rotate rectangular two-dimension array on 90 degree, add the following line before or after (depending on the rotation direction you need) the code above:
$array = array_reverse($array);
PHP: array_map и ключи массива
Записная книжка рассеянного [в пространстве и времени] программиста
PHP: array_map и ключи массива
Интересно, почему такой вопрос часто всплывает на форумах или где-то еще?
Сначала постараюсь ответить на вопрос “нафига?”, а потом на вопрос “как?”.
Мы привыкли, что в в питоне, js и множестве других языков и фреймворков есть функция map, которая применяет некоторую функцию-обработчик к каждому элементу в списке данных и возвращающую результат в том же порядке. Пруф.
Но никто не ждал, что хеш-таблица и массив в контексте одного из языков будет означать одно и то же. Опять же пруф.
Этот постыдный момент из жизни структуры привел к тому, что одним из самых частых применений массивов (в пхп конечно же) стало создание отображений категория=>какое-то значение.
А после того как у вас появилось отображение вы, вероятно, захотите это где-нибудь на сгенерированной странице отобразить.
Т.е. показать пользователю сам параметр, а скобках его категорию.
Как мы делаем это в языках (фреймворках), которые разделяют понятие массива и хеш-таблицы? Перебираем объект, который содержит категории и формируем по нему массив выводимых данных. Наверное так.
И тут мы открываем руководство по php и видим, что она применяет некий колбек ко всем элементам массива и после этого возвращает новый массив.
Удобно же! Применили колбек к массиву и получили обработанный.
И что-то не заладилось. 🙂 Ключи в колбек не попадают. Можно сделать все через foreach, но тогда нам потребуется еще одна переменная. А тут все было просто и наглядно.
И мы идем в гугель: “php array_map with keys”.
И все отлично работает. И притом правильно. Относительно конечно же. И никаких вам лишних переменных.
А тем временем в коде вновь и вновь появляются конструкции вида
Проблема кейса из статьи может быть и раздута, но при вчитывании в сотни строк кода более-менее понятными сходу являются только первые два варианта.
array_map
(PHP 4 >= 4.0.6, PHP 5, PHP 7)
array_map — Применяет callback-функцию ко всем элементам указанных массивов
Описание
Список параметров
Возвращаемые значения
Возвращенный массив сохранит ключи аргумента массива тогда и только тогда, когда будет передан ровно один массив. Если передано более одного массива, возвращенный массив будет иметь последовательные целочисленные ключи.
Примеры
Пример #1 Пример использования array_map()
Пример #2 Использование array_map() вместе с лямбда-функцией (начиная с PHP 5.3.0)
Пример #3 Пример использования array_map() : обработка нескольких массивов
Результат выполнения данного примера:
Обычно при обработке двух или более массивов, они имеют одинаковую длину, так как callback-функция применяется параллельно к соответствующим элементам массивов. Если массивы имеют различную длину, более короткие из них дополняется элементами с пустыми значениями до длины самого длинного массива.
Интересным эффектом при использовании этой функции является создание массива массивов, что может быть достигнуто путем использования значения null в качестве имени callback-функции.
Пример #4 Выполнение zip операции с массивами
Результат выполнения данного примера:
Пример #5 null callback только с array
Результат выполнения данного примера:
Пример #6 Использование array_map() со строковыми ключами
Результат выполнения данного примера:
Смотрите также
Php array map recursive
Описание array array_map ( mixed callback, array array1 [, array array2. ] )
Пример 1. Пример использования array_map()
Array ( [0] => 1 [1] => 8 [2] => 27 [3] => 64 [4] => 125 )
Пример 2. Пример использования array_map() : обработка нескольких массивов
$a = array(1, 2, 3, 4, 5);
$b = array(«uno», «dos», «tres», «cuatro», «cinco»);
Результат выполнения:
$a = array(1, 2, 3, 4, 5); $b = array(«one», «two», «three», «four», «five»); $c = array(«uno», «dos», «tres», «cuatro», «cinco»); Результатом выполнения вышеприведенной программы будет: |