ГЛАВА 5. Массивы
Создание массивов
Массив представляет собой совокупность объектов, имеющих одинаковые размер и тип. Каждый объект в массиве называется элементом массива. Создать новый массив в РНР несложно. При объявлении индексируемого массива после имени переменной ставится пара квадратных скобок([ ]):
$languages [ ] = "Spanish"; // $languages[0] = "Spanish"
После этого в массив можно добавлять новые элементы, как показано ниже. Обратите внимание: новые элементы добавляются без явного указания индекса. В этом случае новый элемент добавляется в позицию, равную длине массива плюс 1:
$languages[ ] = "English"; // $1anguages[l] = "English";
$languages[ ] = "Gaelic"; // $languages[2] = "Gaelic";
Кроме того, новые элементы можно добавлять в конкретную позицию массива. Для этого указывается индекс нрвого элемента:
$languages[15] = "Italian";
$languages[22] = "French";
Ассоциативные массивы создаются аналогичным образом:
$languages["Spain"] = "Spanish";
$languages["France"] = "French";
При создании массивов используются три стандартные языковые конструкции:
- аrrау();
- list();
- range().
Хотя все три случая приводят к одному результату — созданию массива, в некоторых случаях одна конструкция может оказаться предпочтительнее других. Далее приведены описания и примеры использования каждой конструкции.
arrау()
Функция array() получает ноль или более элементов и возвращает массив, состоящий из указанных элементов. Ее синтаксис:
array array( [элемент1, элемент2...] )
Вероятно, array() является всего лишь более наглядной записью для создания массива, используемой для удобства программиста. Ниже показан пример использования array() для создания индексируемого массива:
$languages = array("English", "Gaelic", "Spanish");
// $languages[0] = "English",
// $languages[1] = "Gaelic",
// $languages[2] = "Spanish"
А вот как array() используется при создании ассоциативных массивов:
$languages = array("Spain" => "Spanish", "Ireland" => "Gaelic", "United States" => "English");
// $languages["Spain"] = "Spanish"
// $languages["Ireland"] = "Gaelic"
// $languages["United States"] = "English"
Ассоциативные массивы особенно удобны в тех ситуациях, когда числовые индексы не имеют логического соответствия. Например, в предыдущем примере названия стран вполне естественно ассоциируются с языками. Попробуйте-ка воплотить эту логическую связь при помощи цифр!
list()
Конструкция list() похожа на аrrау(), однако ее главная задача — одновременное присваивание значений, извлеченных из массива, сразу нескольким переменным. Синтаксис команды list():
void list(переменная1 [. переменная2 , ...] )
Конструкция list() особенно удобна при чтении информации из базы данных или файла. Допустим, вы хотите отформатировать и вывести данные, прочитанные из текстового файла. Каждая строка файла содержит сведения о пользователе(имя, профессия и любимый цвет); компоненты записи разделяются вертикальной чертой(|). Типичная строка выглядит так:
Nino Sanzi|Professional Golfer|green
При помощи list() можно написать простой цикл, который будет читать каждую строку, присваивать ее компоненты переменным, форматировать и отображать данные. Приведенный ниже листинг демонстрирует возможность одновременного присваивания нескольким переменным с использованием list():
// Читать строки, пока не будет достигнут конец файла
while($line = fgets($user_file. 4096)) :
// Разделить строку функцией split().
// Компоненты присваиваются переменным Sname. $occupation и Scolor.
list($name, $occupation, $color) = split( "|", $line);
// Отформатировать и вывести данные
print "Name: Sname <br>";
print "Occupation: Soccupation <br>";
print "Favorite color: Scolor <br>";
endwhile;
Каждая строка файла читается, форматируется и выводится в следующем виде:
Name: Nino Sanzi
Occupation: Professional Golfer
Favorite color: green
В приведенном примере применение list() зависит от разделения строки на элементы функцией split(). Элементы, полученные в результате деления, присваиваются, соответственно, переменным $name, $occupation и $color. Дальше все сводится к форматированию данных для вывода в конкретном браузере. Удобные средства лексического анализа текстовых файлов являются одной из сильных сторон РНР. Эта тема подробно рассматривается в главах 7 и 8.
range()
Конструкция range() позволяет легко и быстро создать массив целых чисел из интервала, определяемого верхней и нижней границами. Range() возвращает массив, состоящий из всех целых чисел указанного интервала. Синтаксис range():
array range(int нижняя_граница, int верхняя граница)
Следующий пример наглядно показывает, насколько удобна эта конструкция:
$lottery = range(0,9); // $lottery = array(0,1,2,3,4,5,6,7,8,9)
Как видно из приведенного фрагмента, в параметрах range() был указан интервал от 0 до 9 и массив $lottery был заполнен целыми числами из этого интервала.
Назад |
Содержание раздела |
Общее Содержание |
Вперед
Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту:
|