Уроки PHP — Массивы (Array)
В этом уроке мы рассмотрим, что такое массивы в PHP и как с ними работать. Вы узнаете, как создавать, сортировать или выводить содержимое массива. Рассмотрим ассоциативные и многомерные массивы. Также уделим немного внимания основным функциям при работе с массивами в PHP.
Массивы в PHP – основы
Массивы – это специальные типы данных. В отличии от других простых переменных, массив может хранить более одного значения. Предположим, что вам нужно сохранить основные цвета в своем PHP-скрипте:
Основные цвета:
- белый
- черный
- зеленый
- красный
- синий
Довольно сложно, скучно и неудобно хранить каждый цвет в отдельной переменной. Было бы очень хорошо иметь более удобный инструмент для этого. И тут в игру вступает массив (array
).
Тип данных массив существует именно для таких целей. Итак, давайте посмотрим, как создать массив, в котором будет храниться список основных цветов.
Создание массива
Создать массив в PHP можно различными способами. Возможно, самый простой способ создать массив выглядит так:
<?php $colorList = array("белый", "черный", "зеленый", "синий", "красный"); ?>
Другое решение состоит в том, чтобы инициализировать элементы массива один за другим следующим образом:
<?php $colorList[0] = "белый"; $colorList[1] = "черный"; $colorList[2] = "зеленый"; $colorList[3] = "синий"; $colorList[4] = "красный"; ?>
Если вы не хотите беспокоиться о нумерации элементов массива, вы можете создать массив и таким образом:
<?php $colorList[] = "белый"; $colorList[] = "черный"; $colorList[] = "зеленый"; $colorList[] = "синий"; $colorList[] = "красный"; ?>
Как вы можете видеть, этот массив почти аналогичен предыдущему, но здесь мы не указывали нумерацию элементов в квадратных скобках. В этом случае PHP сам выполнит внутреннюю нумерацию от 0 до 4. Будет использоваться так называемая функция автоинкрементных ключей.
Отображение содержимого массива
Итак, мы создали массив, но как теперь использовать данные этого массива? Например, как отобразить элементы? Есть несколько способов сделать это.
Если вы хотите отобразить только один элемент массива, вы можете использовать следующий код:
<?php echo $colorList[0]; ?>
Этот код выведет на экран текст «белый» (именно этот цвет имеет индекс 0 в массиве).
Вы также можете отобразить все элементы в массиве. Для этого можно использовать цикл for
:
<?php for ($i=0; $i<=4; $i++){ echo $colorList[$i]; } ?>
Это довольно легко, однако не является лучшим решением, поскольку количество элементов жестко закодировано. Существует гораздо лучший способ отображения всех элементов массива. Для этого можно использовать цикл foreach
:
<?php foreach ($colorList as $value) { echo $value; } ?>
Если вы хотите отображать содержимое массива в целях отладки, вы можете использовать 2 встроенные функции PHP: print_r
и var_dump
. Эти функции отображают массив в виде пар ключ=>значение (key=>value
). Функция var_dump
также отображает переменную информацию. Вы можете использовать эти функции следующим образом:
<?php print_r($colorList); // или var_dump($colorList); ?>
Ассоциативные массивы
Грубо говоря, массивы в PHP – это карты, в которых сделана привязка значений и ключей. В нашем примере это означает, что ключ равный 0 имеет значение «белый», а ключ равный 1 имеет значение «черный». Однако есть возможность использовать более значимые (понятные) ключи. Ассоциативный массив означает, что вы можете назначить произвольный ключ каждому значению. Ассоциативные массивы иногда называют словарями. Наш массив colorList
может быть определен как ассоциативный массив следующим образом:
<?php $colorList = array( "яблоко" => "красный", "трава" => "зеленый", "небо" => "синий", "ночь" => "черный", "стена" => "белый" ); ?>
Вы должны помнить, что ключи массива чувствительны к регистру, но нечувствительны к типу. Это означает, что «а» отличается от «А», но «1» – это тоже, что и 1.
Таким образом, приведенный выше массив может быть определен (создан) следующим образом:
<?php $colorList["яблоко"] = "красный"; $colorList["трава"] = "зеленый"; $colorList["небо"] = "синий"; $colorList["ночь"] = "черный"; $colorList["стена"] = "белый"; ?>
И вы можете отображать содержимое ассоциативного массива, как и в обычном, но здесь вам нужно использовать строковое значение вместо числа.
<?php echo "Цвет неба - ".$colorList["небо"] .", а цвет травы - ".$colorList["трава"]; ?>
Вы можете смешивать массив и использовать числа и строки в одном списке следующим образом:
<?php $colorList["яблоко"] = "красный"; $colorList[3] = "зеленый"; $colorList["небо"] = "синий"; $colorList["ночь"] = "черный"; $colorList[7] = "белый"; ?>
Как вы можете видеть, даже числа могут быть любыми, поэтому вам не обязательно писать их в порядке возрастания. Однако следует осторожно использовать смешанные массивы, так как это может привести к ошибкам.
Многомерные массивы
Поскольку каждое значение элемента массива может быть любого типа, это означает, что этот элемент также может быть и другим массивом. Если значением элемента массива является другой массив, тогда это многомерный массив. Значения вложенного массива также могут быть массивами и так далее. Вы можете определить 10-мерный (или более) массив, если нужно.
Создать многомерный массив так же просто, как и обычный массив. Давайте посмотрим на пример:
<?php $myLists['цвета'] = array( "яблоко" => "красный", "трава" => "зеленый", "небо" => "синий", "ночь" => "черный", "стена" => "белый" ); $myLists['автомобили'] = array( "BMW" => "Z4", "Mercedes" => "S-Class", "Lexus" => "GS F", "Mazda" => "MX-5 Miata", "Toyota" => "Yaris" ); ?>
Для доступа и отображения элемента в многомерном массиве вы просто указываете список ключей следующим образом:
<?php echo $myLists['автомобили']['Toyota']; // Yaris ?>
Таким образом вы можете определять нормальные, смешанные и ассоциативные многомерные массивы.
Функции массива
Во время программирования может возникнуть необходимость манипулирования массивами. Для этого в PHP есть несколько полезных встроенных функций.
Нужно получить длину массива или, другими словами, узнать сколько элементов содержится в массиве? Чтобы получить эту информацию вы можете использовать функцию sizeof
. Она показывает числовое значение количества элементов в массиве. Вы можете использовать ее так:
<?php echo sizeof($colorList); ?>
Как удалить элемент из массива? В этом случае вы можете использовать функцию unset
следующим образом:
<?php unset($colorList["небо"]); ?>
Как проверить, что в массиве содержится запрошенный элемент? Используйте функцию isset
следующим образом:
<?php if (isset($colorList["трава"])) echo "OK"; ?>
И последнее, иногда нужно отсортировать содержимое массива, например, в алфавитном порядке. Для этого у вас есть несколько способов, которые встроены в PHP. Наиболее известными функциями являются sort
и asort
. Разница между ними заключается в том, что sort
перенумеровывает ключи, поэтому вы потеряете значения ключей. Поэтому, если вам нужны имена этих ключей (ассоциативные массивы), используйте функцию asort
.
Используйте эти функции следующим образом:
<?php sort($colorList); asort($colorList); ?>
Обе функции сортируют значения в порядке возрастания. Если вам нужна сортировка элементов массива по убыванию, тогда используйте функции rsort
и arsort
, соответственно.