Массивы
На самом деле массив в PHP - это упорядоченное отображение, которое
устанавливает соответствие между значением и
ключом. Этот тип оптимизирован в нескольких
направлениях, поэтому вы можете использовать его как собственно
массив, список (вектор), хэш-таблицу (являющуюся реализацией карты),
словарь, коллекцию, стэк, очередь и, возможно, что-то еще.
Так как значением массива может быть другой массив PHP, можно также создавать
деревья и многомерные массивы.
Объяснение этих структур данных выходит за рамки данного
справочного руководства, но вы найдете как минимум один пример по
каждой из них. За дополнительной информацией вы можете обратиться к
соответствующей литературе по этой обширной теме.
Синтаксис
Определение при помощи array()
Массив может быть создан языковой конструкцией array().
В качестве параметров она принимает любое количество разделенных
запятыми пар
key =>
value (ключ => значение).
array( key => value
, ...
)
// key может быть integer или string
// value может быть любым значением любого типа
key может быть либо integer, либо
string. Если ключ - это стандартное представление
integer, он так и будет интерпретироваться (т.е.
"8" будет восприниматься как 8,
тогда как "08" будет интерпретироваться как
"08").
Float в key будет обрезан до integer.
В PHP нет разницы между индексными и ассоциативными массивами;
существует только один тип массива, который может содержать и числовые, и строковые индексы.
Значение может быть любого имеющегося в PHP типа.
Замечание:
Попытка доступа к неопределенному ключу в массиве - это то же самое,
что и попытка доступа к любой другой неопределенной переменной:
будет вызвана ошибка уровня E_NOTICE,
и результат будет NULL.
Если вы не указываете ключ для приведенного значения, то берется
максимальный числовой индекс и новый ключ будет равен этому
значению плюс 1. Если вы укажете ключ, которому уже присвоено
значение, оно будет перезаписано.
Внимание
До PHP 4.3.0, добавление элемента к массиву, в котором текущий максимальный являлся
отрицательным, создавало новый ключ так, как описано выше.
Начиная с версии PHP 4.3.0, новый ключ будет 0.
Используя TRUE как key, вы получите ключ
1 типа integer. Используя в
FALSE как key, вы получите ключ 0 типа
integer. Используя в качестве ключа
NULL, вы получите пустую строку. Использование в
качестве ключа пустой строки создаст (или перезапишет) ключ с пустой
строкой и его значение; это не то же самое, что использование пустых
квадратных скобок.
Массивы и объекты не могут быть использованы в качестве ключей. Это
вызовет предупреждение: Illegal offset type
('Недопустимый тип смещения').
Создание/модификация с помощью синтаксиса квадратных скобок
Существующий массив может быть изменен явной установкой значений в нем.
Это выполняется присвоением значений массиву при указании в скобках
ключа. Кроме того, вы можете опустить ключ, в этом случае добавьте к
имени переменной пустую пару скобок ([]).
$arr[key] = value;
$arr[] = value;
// key может быть integer или string
// value может быть любым значением любого типа
Если массив $arr еще не существует, он будет создан.
Таким образом, это еще один способ определить массив. Для изменения
определенного значения просто присвойте элементу с его ключом новое
значение. Если вы хотите удалить пару ключ/значение, вам нужно
использовать функцию unset().
Замечание:
Как уже говорилось выше, если ключ не был указан,
то будет взят максимальный из существующих целочисленных
индексов, и новым ключом будет это максимальное значение плюс 1.
Если целочисленных индексов еще нет, то ключом будет
0 (ноль).
Учтите, что максимальное целое значение ключа не обязательно
существует в массиве в данный момент. Оно могло просто существовать
в массиве какое-то время, с тех пор как он был переиндексирован в последний раз.
Следующий пример это иллюстрирует:
Полезные функции
Для работы с массивами существует достаточное количество полезных
функций. Смотрите раздел функции для работы
с массивами.
Замечание:
Функция unset() позволяет удалять ключи массива.
Обратите внимание, что массив НЕ
будет переиндексирован. Если вы действительно хотите поведения в стиле
"удалить и сдвинуть", можно переиндексировать массив
используя array_values().
Управляющая конструкция foreach существует специально для массивов.
Она предоставляет возможность легко пройтись по массиву.
|