главная :: основы PHP
Создание массивов
Массив представляет собой совокупность объектов, имеющих одинаковые размер и тип. Каждый объект в массиве называется элементом
массива. Создать новый массив в РНР несложно. При объявлении индексируемого массива после имени переменной ставится пара
квадратных скобок ([ ]):
$languages [ ] = "Spanish";
// $languages[0] = "Spanish"
После этого в массив можно добавлять новые элементы, как показано ниже. Обратите внимание: новые элементы добавляются без явного
указания индекса. В этом случае новый элемент добавляется в позицию, равную длине массива плюс 1:
$languages[ ] = "English"; // $1anguages[l] = "English";
$languagest ] = "Gaelic"; // $languages[2] = "Gaelic";
Кроме того, новые элементы можно добавлять в конкретную позицию массива. Для этого указывается индекс нрвого элемента:
$languages[15] = "Italian";
$languages[22] = "French";
Ассоциативные массивы создаются аналогичным образом:
$languages["Spain"] = "Spanish";
$languages["France"] = "French";
При создании массивов используются три стандартные языковые конструкции:
аrrау( );
list( );
range( ).
Хотя все три случая приводят к одному результату — созданию массива, в некоторых случаях одна конструкция может оказаться
предпочтительнее других. Далее приведены описания и примеры использования каждой конструкции.
аггау( )
Функция 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 ";
print "Occupation: Soccupation ";
print "Favorite color: Scolor ";
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 был заполнен целыми числами из
этого интервала.
|