|
Массив представляет
собой список однотипных элементов.
Существует два типа массивов,
различающиеся по способу идентификации
элементов. В массивах первого типа элемент
определяется индексом в
последовательности. Массивы второго типа
имеют ассоциативную природу, и для
обращения к элементам используются ключи,
логически связанные со значениями. Впрочем,
на практике операции с массивами обоих
типов выполняются сходным образом. По
размерности массивы делятся на одномерные
и многомерные.
Одномерные индексируемые массивы
При обращении к элементам одномерных
индексируемых массивов используется
целочисленный индекс, определяющий позицию
заданного элемента.
Обобщенный синтаксис элементов
одномерного массива:
$имя[индекс1];
Одномерные массивы создаются следующим
образом:
$meat[0] = "chicken";
$meat[l] = "steak";
$meat[2] = "turkey";
При выполнении следующей команды:
print $meat[1]:
в браузере выводится строка
steak
При создании массивов также можно
воспользоваться функцией array (). Массив $meat
из предыдущего примера создается командой
$meat = аrrау("chicken", "steak", "turkey");
Приведенная выше команда pri nt приводит к
тому же результату — выводу строки steak.
Чтобы включить новый элемент в конец
массива, можно просто присвоить значение
переменной массива без указания индекса.
Следовательно, массив $meat можно создать еще
одним способом:
Smeat[] = "chicken";
$meat[] = "steak";
Smeat[] = "turkey";
Одномерные ассоциативные массивы
Ассоциативные массивы особенно удобны в
ситуациях, когда элементы массива удобнее
связывать со словами, а не с числами.
Предположим, вы хотите сохранить в
массиве лучшие сочетания вин и блюд. Проще
всего было бы хранить в массиве пары «ключ/значение»
— например, присвоить сорт вина названию
блюда. Самым разумным решением будет
использование ассоциативного массива:
Spairings["zinfandel"]
= "Broiled Veal Chops";
$pairings["merlot"]
= "Baked Ham";
$pairings["sauvignon"] = "Prime Rib";
$pairings["sauternes"] = "Roasted Salmon";
Ассоциативный массив заметно экономит
время и объем программного кода,
необходимого для вывода определенных
элементов массива. Допустим, вы хотите
узнать, с каким блюдом лучше всего идет «Мерло».
Нужная информация выводится простой
ссылкой на элемент массива $pairings: print $pairings["merlot"];
// Выводится строка "Baked Ham"
Ассоциативные массивы также можно
создавать функцией РНР аггау():
Spairings = аrrау(
zinfandel => "Broiled Veal Chops",
merlot => "Baked Ham",
sauvignon => "Prime Rib",
sauternes => "Roasted Salmon");
Отличается только способ создания
массива pairings, а функциональные возможности
остаются без изменений.
Многомерные индексируемые массивы
Многомерные индексируемые массивы
работают практически так же, как и их
одномерные прототипы, однако элементы в них
определяются несколькими индексами вместо
одного. Теоретически размерность
индексируемого массива не ограничивается,
хотя в большинстве приложений практически
не встречаются массивы с размерностью выше
3.
Обобщенный синтаксис элементов
многомерного массива:
$имя[индекс1][индекс2]..[индексN];
Пример ссылки на элемент двухмерного
индексируемого массива:
$position = $chess_board[5][4];
Многомерные ассоциативные массивы
Многомерные ассоциативные массивы также
существуют в РНР (и приносят определенную
пользу). Допустим, в массиве $раirings из
предыдущего примера должна храниться
информация не только о сорте, но и о
производителе вина. Это можно сделать
следующим образом:
$pairings["Martinelli"]["zinfandel"] = "Broiled Veal
Chops";
$pairings["Beringer"]["merlot"] = "Baked
Ham";
$pairings["Jarvis"]["sauvignon"] = "Prime
Rib";
$pairings["Climens"]["sauternes"] = "Roasted
Salmon";
Смешанное индексирование
В многомерных массивах допускается
смешанное индексирование (числовое и
ассоциативное). Допустим, вы хотите
расширить модель одномерного
ассоциативного массива для хранения
информации об игроках первого и второго
состава футбольной команды. Решение может
выглядеть следующим образом:
$Buckeyes["quarterback"] [1] = "Bellisari";
$Buckeyes["quarterback"] [2] = "Moherman":
$Buckeyes["quarterback"] [3] = "Wiley";
В РНР существует множество функций для
создания массивов и операций с ними — эта
тема настолько обширна, что заслуживает
отдельной главы. |