php array map use

Php array map use

Описание 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»);

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

Обычно при обработке двух или более массивов, они имею одинаковую длину, так как функция обратного вызова применяется параллельно к соответствующим элементам массивов. Если массивы имеют различную длину, самый маленький из них дополняется элементами с пустыми значениями.

Интересным эффектом при использовании этой функции является создание массива массивов, что может быть достигнуто путем использования значения NULL в качестве имени функции обратного вызова.

Пример 3. Создание массива массивов

$a = array(1, 2, 3, 4, 5);
$b = array(«one», «two», «three», «four», «five»);
$c = array(«uno», «dos», «tres», «cuatro», «cinco»);

Результатом выполнения вышеприведенной программы будет:

Array ( [0] => Array ( [0] => 1 [1] => one [2] => uno ) [1] => Array ( [0] => 2 [1] => two [2] => dos ) [2] => Array ( [0] => 3 [1] => three [2] => tres ) [3] => Array ( [0] => 4 [1] => four [2] => cuatro ) [4] => Array ( [0] => 5 [1] => five [2] => cinco ) )

Источник

(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”.

И все отлично работает. И притом правильно. Относительно конечно же. И никаких вам лишних переменных.

А тем временем в коде вновь и вновь появляются конструкции вида

Проблема кейса из статьи может быть и раздута, но при вчитывании в сотни строк кода более-менее понятными сходу являются только первые два варианта.

Источник

PHP: Can I get the index in an array_map function?

I’m using a map in php like so:

Is it possible to get the index of the value in the function?

php array map use. Смотреть фото php array map use. Смотреть картинку php array map use. Картинка про php array map use. Фото php array map use

6 Answers 6

Sure you can, with the help of array_keys():

php array map use. Смотреть фото php array map use. Смотреть картинку php array map use. Картинка про php array map use. Фото php array map use

php array map use. Смотреть фото php array map use. Смотреть картинку php array map use. Картинка про php array map use. Фото php array map use

When mapping an anonymous function over an anonymous array, there is no way to access the keys:

array_reduce doesn’t get access to the keys either. array_walk can access keys, but the array is passed by reference, which requires a layer of indirection.

Some solutions are:

Array of pairs

This is bad, since we’re changing the original array. Plus the boilerplate «array()» calls increase linearly with the length of the array:

Temporary variable

We’re acting on the original array, and the boilerplate is constant, but we can easily clobber an existing variable:

One-shot function

We can use function scope to prevent clobbering existing names, but have to add an extra layer of «use»:

Multi-argument one-shot function

We define the function we’re mapping in the original scope to prevent the «use» boilerplate):

New function

The interesting thing to note is that our last one-shot function has a nice, generic signature and looks a lot like array_map. We might want to give this a name and re-use it:

Our application code then becomes:

Indirect Array Walk

When writing the above I’d ignored array_walk since it requires its argument to be passed by reference; however, I’ve since realised that it’s easy to work around this using call_user_func. I think this is the best version so far:

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *