▼"На английском"
Map is a higher-order function that applies a given function to each element of a list, and afterwards returns a list of results. If is often called apply-to-all when considered in functional form. For example:
If we define a function square as follows:
After calling, map square [1,2,3,4,5] will return [1,4,9,16,25] as map goes through the list and applies the function square to each element.
The map function originated in functional programming languages but is today supported in many procedural, object-oriented, and multi-paradigm languages as well: in C++'s Standard Template Library (stdlib) it is called transform.
- - -
Map — это функция высшего порядка, которая к каждому элементу списка применяет заданную функцию и после этого возвращает список из полученных результатов. Эта функция также известна как функция apply-to-all ("применить-ко-всему"). Например:
Пусть у нас есть следующая функция square ("возвести-в-квадрат"):
Если мы вызовем функцию map как map square [1,2,3,4,5], то получим [1,4,9,16,25], т.к. функция map последовательно пройдет через весь список [1,2,3,4,5] и возведет каждый элемент этого списка в квадрат (результат работы функции square).
Функция map впервые появилась в функциональном программировании. Функциональное программирование, в свое время, явилось рывком в компьютерной науке — это был новый способ по созданию структуры и элементов компьютерных программ. В ф. пр. любые вычисления являются результатами работы математических функций, поэтому само по себе ф. пр. — это декларативное программирование, т.к. прежде чем получить вычисление, ты должен позвать функцию.
Сегодня функция map реализована во многих процедурных, объектно-ориентированных и мультипарадигмальных языках программирования. Например, в С++ эта функция реализована в Стандартной Библиотеке Шаблонов (Standard Template Library или stdlib) как функция transform.
- - -
Массив в PHP, по своей сути, это упорядоченная функция map.
Map здесь представляет из себя тип, который соотносит значения элементов с ключами, т.е. каждому значению элемента присваивается личный ключ (надо ли говорить, что ключ должен быть уникальным, т.е. не может быть двух и более одинаковых ключей). Данный тип оптимизирован под разные нужды — может использоваться как массив, как список (или вектор), как хеш-таблица, словарь, коллекция, стек, очередь и т.д. Значениями массива могут быть другие массивы, деревья и многомерные массивы.
Массив задается функцией array() и представляет из себя пары аргументов ключ => значение (key => value). Например:
(в языках программирования компилятор все читает СПРАВА налево, отсюда зеркальная запись)
array(
key => value,
key2 => value2,
key3 => value3,
...
)
Запятая после последнего элемента (после последней пары ключ => значение) опциональна, т.е. может быть опущена. Обычно запятая опускается в массиве, который задан одной строкой (например, array(1, 2)). Если массив задан более, чем одной строкой, запятая после последнего элемента ставится, т.к. становится проще добавлять новые элементы.
В PHP есть 3 типа массивов:
Indexed arrays или проиндексированный массивы, где каждому элементу соответствует числовой индекс;
Associative arrays или ассоциативный массивы, где каждому элементу соответствует названный ключ;
Multidimensional arrays или многомерный массивы, который состоит из одного или более других массивов.
В VBA (Visual Basic for Applications) нет ассоциативных массивов (исключая объекты Словаря — Dictionary object), поэтому, если мы хотим произвести операции по перестановке элементов массива, вместо названного ключа придется возвращать его индекс.
Функции из PHP, которые были адаптированы под VBA, по перестановке элементов массива можно найти здесь: http://www.jpsoftwaretech.com/useful-ar … ba-part-6/