W3docs

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— editable, runs on the server

Если ключи не указаны, 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 выполняет роль индексного списка, ассоциативного отображения и вложенного дерева, умение создавать массивы, считать элементы, добавлять и перебирать их открывает доступ к большей части инструментария языка для работы с данными.

Практика

Практика
Каковы основные виды массивов в PHP?
Каковы основные виды массивов в PHP?
Was this page helpful?