главная :: основы PHP
Массивы
Массив представляет собой список однотипных элементов. Существует два типа массивов, различающиеся по способу идентификации
элементов. В массивах первого типа элемент определяется индексом в последовательности. Массивы второго типа имеют ассоциативную
природу, и для обращения к элементам используются ключи, логически связанные со значениями. Впрочем, на практике операции с
массивами обоих типов выполняются сходным образом. По размерности массивы делятся на одномерные и многомерные.
Одномерные индексируемые массивы
При обращении к элементам одномерных индексируемых массивов используется целочисленный индекс, определяющий позицию заданного
элемента.
Обобщенный синтаксис элементов одномерного массива:
$имя[индекс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";
В РНР существует множество функций для создания массивов и операций с ними — эта тема настолько обширна, что заслуживает отдельной
главы. Работа с массивами в РНР подробно описана в главе 13
|