Привет, Гость!
home login register
[+] Купить Рекламу
Хостинг для тебя! Заходи не пожалеешь
Основные сервисы и быстрый поиск
Вступайте в нашу группу ВКОНТАКТЕ
Поздравляем, новичка с ID:1000
Как самомусделать QR-код
IT новости: в Windows новая опасная уязвимость Проблемы восприятия IT

Учебник PHP #5
1 2 3 ... 7 >>
ГЛАВА 5

Массивы

В главе 2 были представлены две разновидности массивов, используемых в программах РНР, — индексируемые и ассоциативные. Вероятно, вы помните, что в индексируемых массивах при обращении к элементу указывается его позиция, а в ассоциативных массивах для этой цели используется специальный ключ. Обе разновидности массивов обладают гибкими и мощными средствами для работы с большими объемами данных

В этой главе рассматриваются различные средства РНР по работе с массивами. К концу этой главы вы познакомитесь с одномерными и многомерными массивами, сортировкой и перебором элементов, а также с другими возможностями, часто используемыми при работе с массивами. Книгу не стоит рассматривать как подробный справочник по всем существующим функциям, хотя так уж получилось, что в этой главе рассматриваются практически все функции массивов. Последнюю версию списка функций можно найти на домашней странице РНР по адресу http://www.php.net/.

Создание массивов

Массив представляет собой совокупность объектов, имеющих одинаковые размер и тип. Каждый объект в массиве называется элементом массива. Создать новый массив в РНР несложно. При объявлении индексируемого массива после имени переменной ставится пара квадратных скобок ([ ]):

$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 <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 был заполнен целыми числами из этого интервала.

Многомерные массивы

Со временем ваши программы станут более сложными, и возможностей простых одномерных массивов окажется недостаточно для хранения необходимой информации. Многомерный массив (массив массивов) предоставляет в распоряжение программиста более эффективные средства для хранения информации, требующей дополнительного структурирования. Создать многомерный массив несложно — просто добавьте дополнительную пару квадратных скобок, чтобы вывести массив в новое измерение:

$chessboard [1] [4] = "King"; // Двухмерный массив

$capitals["USA"] ["Ohio"] = "Columbus": // Двухмерный массив

$streets["USA"]["Ohio"]["Columbus"] = "Harrison"; // Трехмерный массив

В качестве примера рассмотрим массив, в котором хранится информация о десертах и особенностях их приготовления. Обойтись одномерным массивом было бы довольно трудно, но двухмерный массив подходит как нельзя лучше:

$desserts = аrrау(

"Fruit Cup" => array (

"calories" => "low",

"served" -> "cold",

"preparation" => "10
Комментарии (0)
1 2 3 ... 7 >>
Скачать Java книгу

»php/mysql/pdo/js
В библиотеку

На главную

Сообщество wap разработчиков I HwapCMS официальный сайт поддержки


RSS-лента
Генерация: 0.0159 сек.