Массивы хранят значения в списках. Ссылка к элементам массива задается с помощью индекса, который чаще всего является целым числом, но может быть также и строкой. Значение элемента может быть текстом, числом или даже другим массивом. Создание массива, содержащего массивы, позволяет создавать многомерные массивы. Массивы широко применяются встроенными функциями PHP, и программирование без них в большинстве случаев невозможно. Существует много функций, непосредственно разработанных для манипулирования массивами. Им уделено особое внимание в главе 11, "Данные".
5.1. Одномерные массивы
Для обращения к элементу массива используются квадратные скобки, внутри которых указывается индекс элемента (листинг 5.1). Эта конструкция обрабатывается подобно переменным, и ей можно присваивать значение или передавать значение функции. Объявление массива до момента его использования не требуется. Аналогично переменным, любой элемент массива создается на лету. При обращении к несуществующему элементу массива в зависимости от контекста ему будет присвоено нулевое значение или пустая строка.
| Листинг 5.1. Ссылка на элементы массива
<?php
$Cities[0] = "Сан-Франциско"; $Cities[1] = "Лос-Анджелес"; $Cities[2] = "Нью-Йорк"; $Cities[3] = "Мартинес"; print("H живу в $Cities[3].<br>n");
?>
Одномерными массивами можно считать список значений с одним и тем же именем. Но неужели не проще создать переменные наподобие $Cities1, $Cities2, $Cities3 и не беспокоиться о каких-то квадратных скобках? Одной из причин является простота просмотра элементов массива в цикле. Зная, что все элементы массива добавлялись с помощью последовательных чисел, для получения каждого элемента массива достаточно цикла for. PHP упрощает процедуру создания таких массивов. Если номера элемента не заданы, присвоение значений элементам процессор PHP начнет с 0, а затем использует последующие целые числа. Запустив программу из листинга 5.2, вы сможете убедиться, что четырем городам будут присвоены индексы 0, 1, 2 и 3 соответственно.
Листинг 5.2. Добавление в массив
<?php
1" •
$Cities[] = " Сан- Франциско" $Cities[] = " Лос- Анджелес";
$Cities[] = " Нью- Йорк";
$Cities[] = "Мартинес"; // счетчик элементов $indexLimit = count($Cities); // вывод каждого элемента
for($index=0; $index < $indexLimit; $index++) {
print("Город $index - $Cities[$index]. <br>n");
}
5.2. Индексирование массивов
До этого момента мы рассматривали только массивы, имеющие целочисленные индексы, но в качестве индексов допустимо также использовать строки. Иногда такие массивы называют ассоциативными массивами или хеш. Они могут понадобиться в ситуациях, когда в одном массиве хранятся данные различного типа. Например, можно создать массив, в котором нулевым элементом является имя, первым элементом - адрес, вторым - род занятий. В листинге 5.3 предоставляется более элегантный способ сделать это.
Листинг 5.3. Индексирование массивов строками
<?php
// введите определенную информацию $UserInfo["Name"] = " Леон Аткинсон"; $UserInfo["Location"] = "Мартинес, Калифорния"; $UserInfo["Occupation"] = "Программист"; // цикл по значениям foreach($UserInfo as $key=>$value)
{
print("$key - $value.<br>n");
}
Так как этот массив не был проиндексирован целочисленными индексами, выборка элементов массива начиная с нулевого невозможна. Но если заглянуть немного вперед, в главу 11, "Данные", то можно найти такие специальные функции, как reset, next и current . Эти функции предлагают один из способов просмотра массивов такого типа, который является лучшим способом, если требуется нечто большее, чем простой просмотр элементов массива по порядку. Поэтому можно использовать все функции, но специально для последовательного просмотра массива в PHP 4 была добавлена функция foreach (см. главу 3, "Операторы управления"). Она аналогична оператору цикла for, но предназначена для выборки элементов массива.