Урок 8: Массивы
В этом уроке познакомимся с массивами, узнаем, как их использовать и что они могут.
Понимание массивов может сначала вызвать затруднения. Но всё-таки попытаемся... попытаемся максимально облегчить это.
Что такое массив?
Массив это набор индексированных элементов, каждый их которых имеет свой уникальный идентификационный номер.
Звучит непонятно? На самом деле всё не так уж сложно.
Представьте себе список слов, разделённых запятыми. Он может выглядеть, например, так:
яблоки, груши, бананы, апельсины, лимоны
Затем представьте разделение списка по запятым. Далее дайте каждому разделу уникальный идентификационный номер:
То, что получилось, и является массивом. Можем назвать этот массив "fruits". Идея в том, чтобы можно было получать доступ к массиву по номеру элемента и получать значение этого элемента:
fruits(0) =
яблоки
fruits(1) =
груши
fruits(2) =
бананы
fruits(3) =
апельсины
fruits(4) = лимоны
Такова базовая идея массивов. Попробуем использовать это на практике.
Как использовать массив?
Продолжим с примером fruit. Шаг за шагом, мы заставим его работать как реальный массив. Сначала создадим переменную для обозначения списка фруктов:
<?php $fruitlist = "яблоки, груши, бананы, апельсины, лимоны"; ?>
Затем используем функцию explode для разделения списка по запятым:
<?php $fruitlist = "яблоки, груши, бананы, апельсины, лимоны"; $arrFruits = explode(",", $fruitlist); ?>
Вуаля! "$arrFruits" теперь обозначает массив!
Заметьте, что мы вызвали функцию explode с двумя аргументами:
- список для разделения
- разграничитель - т. е. символ, используемый для разделения (в нашем случае - запятая) - в двойных кавычках: ",".
Здесь в качестве разграничителя использована запятая, но это может быть любой символ или слово.
Прокомментируем скрипт и вставим его в РНР-страницу:
<html> <head> <title>Массив</title> </head> <body> <?php // Список с разделением запятыми $fruitlist = "яблоки, груши, бананы, апельсины, лимоны"; // Создать массив путём разделения списка (с разделителем-запятой) $arrFruits = explode(",", $fruitlist); // Записать значения из нашего массива echo "<p>Список фруктов:</p>"; echo "<ul>"; echo "<li>" . $arrFruits[0] . "</li>"; echo "<li>" . $arrFruits[1] . "</li>"; echo "<li>" . $arrFruits[2] . "</li>"; echo "<li>" . $arrFruits[3] . "</li>"; echo "<li>" . $arrFruits[4] . "</li>"; echo "</ul>"; ?> </body> </html>
Этот пример - очень простой, и здесь трудно увидеть преимущества использования массива в данной конкретной задаче. Но потерпите... массивы пригодятся для множества полезных вещей.
Циклы через массивы
В уроке 5 вы познакомились с циклами. Теперь посмотрим, как пройти циклом по массиву.
Когда известно, сколько элементов содержится в массиве, проблем с определением цикла нет. Вы просто начинаете с 0 и разрешаете циклу выполняться до количества имеющихся элементов. В примере с fruits можно идти по массиву так:
<html> <head> <title>Массив</title> </head> <body> <?php // Список с разделением запятыми $fruitlist = "яблоки, груши, бананы, апельсины, лимоны"; // Создать массив путём разделения списка (с разделителем-запятой) $arrFruits = explode (",", $fruitlist); echo "<p>Список фруктов:</p>"; echo "<ul>"; // Цикл по массиву $arrFruits for ($x=0; $x<=4; $x++) { echo "<li>" . $arrFruits[$x] . "</li>"; } echo "</ul>"; ?> </body> </html>
Как видите, переменная $x (с инкрементом от 0 до 4 в цикле) использована для вызова этого массива.
Как определить размер массива?
Но что, если мы добавим в список новый фрукт? Тогда массив будет содержать на один элемент больше - с идентификатором 5. Видите проблему? Тогда нам нужно изменить цикл, и он будет работать от 0 до 5, иначе не все все элементы будут охвачены.
Не удобнее ли, если количество элементов массива будет определяться автоматически?
Это можно сделать с помощью функции foreach. Теперь массив работает независимо от количества элементов:
<?php foreach ($arrFruits as $x) { echo $x; } ?>
Этот цикл будет работать независимо от того, сколько элементов в нём содержится.
Ещё пример
Вот другой пример использования массива для записи названия месяца:
<html> <head> <title>Массив</title> </head> <body> <?php // Создать массив из всех названия месяцев. // Создать массив из месяцев. Обратите внимание на запятую перед January - поскольку нет месяца с номером 0 $arrMonths = array("","January","February","March","April","May","June","July","August","September","October","November","December"); // Вызвать массив с номером месяца - записать клиенту echo $arrMonths[date("n")]; ?> </body> </html>
Обратите внимание на использование функции array вместо функции explode для создания массива.
Ok. Хватит о массивах! В следующем уроке вы узнаете, как создавать ваши собственные функции.