This article has been localized into Russian by the community.
Работаем с массивами
Составлять списки чего-нибудь в программировании приходится довольно часто. Для этого можно использовать кучу разных вещей, и в большинстве языков программирования так или иначе присутствуют списки (lists). Однако, в PHP есть только массивы (arrays). К счастью, этот язык содержит множество функций для массивов, которые можно использовать в разных ситуациях.
Массивы очень просты. Это как список элементов, где каждое вхождение характеризуется двумя параметрами: ключом (key) и значением (value). Если у вас есть ключ, то вы можете напрямую получить значение, в противном случае значение придется искать. В начале может показаться немного сложно, но как только вы освоитесь, вы поймете, что работать с массивами очень легко.
Массив можно создать, используя функцию array(), как здесь:
<?php
$array = array();
?>
Если хотите, вы также можете добавить новые элементы массива в качестве параметра, как показано тут:
<?php
$animals = array("Monkey", "Lion", "Turtle", "Horse");
?>
В данном примере мы определили только значения. В таком случае ключами будет последовательность целых чисел, начиная с 0. Это означает, что первое значение получит ключ 0, следующее - ключ 1, и т.д. Доступ к элементам может быть осуществлен по этому номеру, как здесь:
<?php
$animals = array("Monkey", "Lion", "Turtle", "Horse");
echo $animals[2];
?>
Вы просто задаете ключ нужного элемента в квадратных скобках. В некоторых случаях, вам может потребоваться начать не с 0. Этого можно достичь, задав начальный ключ, как здесь:
<?php
$animals = array(2 => "Monkey", "Lion", "Turtle", "Horse");
echo $animals[2];
?>
Теперь отсчет начинается с двух. Можно самостоятельно задать номера каждого элемента, если вам так больше нравится, при условии, что каждый ключ уникален. В иных случаях больше подходят ключи-имена. Без проблем:
<?php
$namesAndAges = array("John Doe" => 45, "Jane Doe" => 33, "Dog Doe" => 11);
echo "The age of Jane Doe: " . $namesAndAges["Jane Doe"];
?>
Мы используем стрелочный оператор =>, чтобы задать возраст по имени, или, иными словами, значение по ключу. Иногда вам может потребоваться добавить элементы не сразу, в момент создания массива, а позже. Вот пример на этот случай:
<?php
$names = array();
$names[] = "John Doe";
$names[] = "Jane Doe";
$names[] = "Dog Doe";
echo $names[1];
?>
Мы используем пустую пару скобок, чтобы PHP самостоятельно создал ключи для элементов, но, очевидно, вы можете использовать аналогичный прием для добавления в массив.
Многомерные массивы
Массивы в примерах выше имеют одну общую черту: они все одномерные, т.е. они состоят из элементарных значений. Но что если вам потребуется массив, который содержит набор массивов? В общем-то, это не проблема. PHP не ограничивает число измерений в массиве, что означает, что вы можете создать массив, который состоит из массивов, каждый из которых состоит из массивов и так далее. Вот пример такой ситуации:
<?php
$contacts = array();
$contacts["Friends"] = array("Me", "John Doe");
$contacts["Family"] = array("Mom", "Dad");
$contacts["Enemies"] = array("Stalin", "Hitler");
foreach($contacts as $categoryName => $value)
{
echo "<b>" . $categoryName . ":</b><br />";
foreach($contacts[$categoryName] as $name)
{
echo $name . "<br />";
}
echo "<br />";
}
?>
Давайте разберем этот более сложный пример. Мы начинаем с создания пустого массива с именем contacts. Мы хотим хранить в нем имена контактов людей, с разными именами в разных категориях. Наш первый массив будет содержать названия категорий, каждое из которых указывает на массив с именами людей, которые принадлежат к этой категории. Мы присваиваем сразу и названия категорий и имена контактов - каждая категория сразу получает свой новый массив с несколькими людьми в нем. Чтобы получить аккуратный вывод такого списка, мы используем два цикла foreach - один проходит по категориям, а второй, внутренний цикл, - по именам контактов в текущей категории. Мы выводим имя категории, а также имя каждого человека в ней, разделенные разрывом строки br. Как вы можете увидеть, протестировав данный скрипт, он создает красивый список людей, разбитый на категории.