array()
Функция array() в PHP создаёт array. Узнайте об индексных, ассоциативных и многомерных массивах, а также об основных операциях с ними.
Введение
Языковая конструкция array() создаёт PHP array — упорядоченное отображение, связывающее ключи со значениями. Несмотря на название «array», PHP array значительно гибче массивов фиксированного размера в таких языках, как C или Java: один array может хранить значения смешанных типов, динамически расти или уменьшаться, а в качестве ключей использовать как целые числа, так и string.
На этой странице рассказано, как работает array(), какие три вида массивов можно создать с его помощью, о современном коротком синтаксисе [] и о повседневных операциях (подсчёт, добавление, перебор), которые вы будете использовать чаще всего. Все примеры можно запустить.
Базовый синтаксис
array(value1, value2, value3, ...)
// or, since PHP 5.4, the short syntax:
[value1, value2, value3, ...]Можно также явно задавать ключи с помощью стрелки key => value:
array(key1 => value1, key2 => value2, ...)Обе формы возвращают значение типа array. Синтаксисы взаимозаменяемы; в современном коде предпочтительна краткая форма [].
Создание array
Если ключи не указаны, PHP назначает последовательные целочисленные ключи, начиная с 0. Таким образом, $fruits[0] — это "apple", $fruits[1] — "banana", а $fruits[2] — "orange". Это индексный array.
Array
(
[0] => apple
[1] => banana
[2] => orange
)Три вида массивов
PHP использует одну структуру данных, array, для трёх концептуальных форм:
Индексные массивы
Ключи — целые числа, присваиваемые автоматически. Используются для упорядоченных списков, где важна только позиция элемента.
<?php
$colors = ["red", "green", "blue"];
echo $colors[1]; // greenПодробнее: индексные массивы.
Ассоциативные массивы
Вы выбираете string-ключи для обозначения каждого значения — это идеально подходит для записей и поиска.
<?php
$user = [
"name" => "Ada",
"email" => "[email protected]",
"age" => 36,
];
echo $user["email"]; // [email protected]Подробнее: ассоциативные массивы.
Многомерные массивы
Значение само может быть array, что позволяет моделировать таблицы и вложенные данные.
<?php
$matrix = [
[1, 2, 3],
[4, 5, 6],
];
echo $matrix[1][2]; // 6Подробнее: многомерные массивы.
Подсчёт элементов
Функция count() возвращает количество элементов верхнего уровня в array. Она естественно сочетается с array():
<?php
$fruits = array("apple", "banana", "orange");
echo count($fruits); // 3Добавление элементов
Чтобы добавить значение в конец, используйте синтаксис [] — он короче вызова array_push() и нагляднее для одного элемента:
<?php
$fruits = ["apple", "banana"];
$fruits[] = "cherry"; // appended with the next integer key (2)
$fruits["fav"] = "mango"; // added with an explicit string key
print_r($fruits);Array
(
[0] => apple
[1] => banana
[2] => cherry
[fav] => mango
)Такое смешение целочисленных и string-ключей в одном array абсолютно допустимо — именно это делает PHP array «упорядоченным отображением».
Перебор array
foreach — идиоматический способ обойти каждую пару ключ/значение, и он работает для всех трёх видов массивов:
<?php
$user = ["name" => "Ada", "age" => 36];
foreach ($user as $key => $value) {
echo "$key: $value\n";
}name: Ada
age: 36Полный справочник: цикл foreach.
Типичные подводные камни
- Дублирующиеся ключи перезаписываются.
[1 => "a", 1 => "b"]сохраняет только"b"— побеждает последнее значение, присвоенное ключу. - String-ключи, похожие на целые числа, становятся целыми.
["7" => "x"]хранится под целочисленным ключом7, поэтому$a[7]и$a["7"]обращаются к одному и тому же элементу. - Обращение к несуществующему ключу вызывает предупреждение и возвращает
null. Предварительно проверяйте с помощьюarray_key_exists()илиisset(). count()считает только верхний уровень. Применительно к многомерному array функцияcount()возвращает количество внешних элементов, а не общее число листовых значений.
Лучшие практики
- Предпочитайте короткий синтаксис
[]вместоarray()в новом коде — это современное соглашение. - Используйте осмысленные string-ключи для ассоциативных данных, чтобы код отражал предметную область.
- Добавляйте элементы через
$arr[] = ..., а не черезarray_push(), когда нужно добавить одно значение. - Используйте подходящую функцию сортировки в зависимости от типа ключей — см. сортировку массивов:
sort(),asort(),ksort()и другие.
Заключение
Конструкция array() (и её сокращение []) — основа работы с данными в PHP. Поскольку один тип array выполняет роль индексного списка, ассоциативного отображения и вложенного дерева, умение создавать массивы, считать элементы, добавлять и перебирать их открывает доступ к большей части инструментария языка для работы с данными.