Ассоциативные массивы в PHP
Массивы, индексами которых являются числа начинающиеся с нуля, называют списками. Однако в PHP индексом массива может быть и строка. Причем на эту строку не накладывается никаких ограничений: она может содержать пробелы, специальные символы, также нет ограничений на длину строки.
Массивы, индексами которых являются строки, называются ассоциативными. Индексы ассоциативных массивов называются ключами. Пример ассоциативного массива:
$People[«Иванов»]=»Иван»;
$People[«Сидоров»]=»Николай»;
$People[«Петров»]=»Петр»;
Доступ к элементам ассоциативных массивов осуществляется так же, как и к элементам обыкновенных массивов, и называется доступом по ключу:
echo $People[«Иванов»];
Списки в PHP
Массивы, индексами которых являются числа, начинающиеся с нуля без пропусков, будем называть списками. С технической точки зрения разницы между массивами и списками нет.
Не знаю как вам, но мне удобнее создавать списки без указания индекса — пусть это сделает за меня PHP. Ведь я могу ненароком указать уже существующий индекс. Кроме того, такое автоматическое создание массивов удобно при записи текстового файла в массив для последующей обработки.
$People[]=»Коля»;
$People[]=»Витя»;
$People[]=»Дима»;
При этом PHP начнет нумерацию с наименьшего незанятого значения индекса. В частности, если переменная $People только сейчас инициализируется, то нумерация будет начата с нуля. В дальнейшем, с каждым новым элементом массива индекс будет увеличиваться на единицу.
Как видите все просто и удобно — не нужно указывать индексы. Однако, это как раз тот случай, когда мы не знаем точного числа элементов в массиве.
Соответственно, при работе с такими массивами целесообразно использовать функцию count(), которая определяет количество элементов в массиве.
Рассмотрим небольшой пример — чтение текстового файла в массив. Функция fopen() используется для открытия файла, функция feof() истинна, если достигнут конец файла, а функция fgets() читает строку из файла.
При работе с файлами мы не знаем, сколько строк будет содержать конкретный файл. Программируя на C или Pascal, нам нужно было бы создать динамический список, что вызывает проблемы у начинающих программистов, не знакомых с принципами работы с динамической памятью. В PHP все просто — вы можете добавить сколько угодно элементов в массив, не указывая их номера. Новые элементы массива будут добавлены в конец массива.
1 2 3 4 5 6 7 8 9 10 |
// Открываем файл $f = fopen("file.txt","rt") or die ("Ошибка"); // Читаем построчно while(!feof($f)) { // Заносим новый элемент (строку, прочитанную из файла) в конец массива $File[ ] = fgets($f,50); } // Закрываем файл fclose($f); |
Массивы в PHP
Массив — это упорядоченный набор данных. Каждый элемент массива имеет индекс или ключ. Индекс (ключ) служит для однозначной идентификации элемента внутри массива. В одном массиве не может быть двух элементов с одинаковыми индексами.
Работать без массива не очень удобно, думаю, вы и сами это понимаете. Существует ряд задач, где без использования массива просто не обойтись. Примером может послужить простой список друзей. Не будете же вы создавать 20 переменных, содержащих имена ваших друзей? Гораздо рациональнее создать один массив, содержащий 20 элементов.
Если вы программировали на C или Pascal, то знаете, что длина массива ограничена. При этом, если вы наперед не знаете, сколько элементов будет содержать ваш массив, значит вам нужно использовать динамические структуры (список, стек, очередь). В PHP все гораздо проще — длину массива не нужно задавать при объявлении массива, длина будет автоматически увеличена при добавлении нового элемента в массив. Все это становится возможным только благодаря тому, что PHP — интерпретатор, а не компилятор.
Очень важной особенностью PHP является то, что он, в отличие от других языков, позволяет создавать массивы любой сложности непосредственно в теле программы (сценария). Это бывает очень полезным, когда требуется создать массив, на основе некоторых, заранее неизвестных параметров.
Рассмотрим простейший способ инициализации массива:
$People[0]=»Коля»;
$People[1]=»Витя»;
$People[2]=»Дима»;
$People[3]=»Марк»;
PHP узнает о том, что создается массив по квадратным скобкам. В квадратных скобках указывается индекс (ключ) отдельного элемента массива. В приведенном примере мы объявили массив $People, состоящий из четырех элементов. Однако в дальнейшем нам никто не помешает инициализировать еще один (или сколько нужно) новый элемент массива. В PHP размер массива не задается явно, как в других языках программирования.
Обратиться к элементу массива можно по имени массива и индексу элемента внутри массива:
echo $People [1];
Зная количество элементов массива, мы можем вывести все элементы массива с помощью цикла:
for ($i=0; $i<количество; $i++) echo «$People[$i] «;
Если мы не знаем точное количество элементов массива, можно использовать функцию count(). Эта стандартная функция определяет размер массива, то есть количество элементов в нем. Соответственно, с использованием функции count() вышеприведенный цикл выглядит следующим образом:
for ($i=0; $i<count($People); $i++) echo «$People[$i] «;