PHP: работа с массивами
Массив - это упорядоченное отображение, которое устанавливает соответствие между значением и ключом. В PHP этот тип данных оптимизирован в нескольких направлениях, поэтому вы можете использовать его как собственно массив, список (вектор), хеш-таблицу (являющуюся реализацией карты), словарь, коллекцию, стек, очередь и, возможно, что-то ещё. Так как значением массива может быть другой массив PHP, можно также создавать деревья и многомерные массивы.
Синтаксис
Определение при помощи array()
Массив (тип array) может быть создан языковой конструкцией array(). В качестве параметров она принимает любое количество разделённых запятыми пар key => value (ключ => значение).
Запятая после последнего элемента массива необязательна и может быть опущена. Обычно это делается для однострочных массивов, то есть array(1, 2) предпочтительней array(1, 2, ). Для многострочных массивов с другой стороны обычно используется завершающая запятая, так как позволяет легче добавлять новые элементы в конец массива.
Определение при помощи [ ]
Начиная с версии PHP 5.4, массивы можно создать через квадратные скобки:
$arr = [ 1 => "php", 2 => "laravel", 3 => "zend"];
Пример определения массива используя разный синтаксис
$arr = array( "foo" => "bar", "bar" => "foo", ); // Использование синтаксиса короткого массива $arr = [ "foo" => "bar", "bar" => "foo", ];
Ограничения определения массива
Ключ (кey) в массиве может быть либо тип int, либо тип string. Значение (value) может быть любого типа.
Дополнительно с ключом key будут сделаны следующие преобразования:
- Строки (string), содержащие целое число (int) (исключая случаи, когда число предваряется знаком +) будут преобразованы к типу int. Например, ключ со значением "8" будет в действительности сохранён со значением 8. С другой стороны, значение "08" не будет преобразовано, так как оно не является корректным десятичным целым.
- Числа с плавающей точкой (float) также будут преобразованы к типу int, то есть дробная часть будет отброшена. Например, ключ со значением 8.7 будет в действительности сохранён со значением 8.
- Тип bool также преобразовываются к типу int. Например, ключ со значением true будет сохранён со значением 1 и ключ со значением false будет сохранён со значением 0.
- Тип null будет преобразован к пустой строке. Например, ключ со значением null будет в действительности сохранён со значением "".
- Массивы (array) и объекты (object) не могут использоваться в качестве ключей. При подобном использовании будет генерироваться предупреждение: Недопустимый тип смещения (Illegal offset type).
- Если несколько элементов в объявлении массива используют одинаковый ключ, то только последний будет использоваться, а все другие будут перезаписаны.
Массивы в PHP могут содержать ключи типов int и string одновременно, так как PHP не делает различия между индексированными и ассоциативными массивами.
Доступ к элементам массива
Доступ к элементам массива может быть осуществлён с помощью синтаксиса array[key].
Пример обращения к значениям массива
$arr = array( "foo" => "bar", 42 => 24, "multi" => array( "dimensional" => array( "array" => "foo" ) ) ); print ($arr["foo"]); print ($arr[42]); print ($arr["multi"]["dimensional"]["array"]);
Существующий массив может быть изменён путём явной установкой значений в нем.
Это выполняется присвоением значений массиву (array) с указанием в скобках ключа.
$arr[key] = value;
Удаление элементов и всего массива
Если необходимо удалить пару ключ/значение, то необходимо использовать функцию unset().
$arr = array(5 => 1, 12 => 2); $arr[] = 56; // В этом месте скрипта это // то же самое, что и $arr[13] = 56; $arr["x"] = 42; // Это добавляет к массиву новый // элемент с ключом "x" unset($arr[5]); // Это удаляет элемент из массива unset($arr); // Это удаляет массив полностью
Функции для работы с массивами
Для работы с массивами существует достаточное количество полезных функций. Смотрите раздел функции для работы с массивами.