|
|
|
Основные типы данных PHP
XML и веб-сервисы
Безопасный офис
Защита от копирования и методы ее взлома
История PHP
Корпоративная информационная система
Новое в PHP5
Основные типы данных PHP
Основы языка программирования РНР 5
Программистские байки
Торговая информационная система
|
Встроенные документы
Доступ к вложенным (многомерным) массивам
Доступ к отдельным символам в строке
Доступ к элементам массива
Другие способы выполнения итераций по массиву
Изменение или создание новых элементов массива
Константы
Конструктор arrayQ
Логический тип
Массивы
Обход массива с помощью foreach ()
Обход массива с помощью list() и each()
Ресурсы
Специальный тип Null
Строки
Целые числа
Числа с плавающей точкой
Чтение элементов массива
Цикл fоreach () очень хорош при организации итерактивной обработки массивов, но мы остановимся еще на одном способе, при котором конструкция list() комбинируется с функцией each(), например: $players = аrrау("Джон", "Барбара", "Билл", "Нэнси"); reset($players); while (list($key, $val) = each(Splayers)) { print "#$key = $val\n"; } Результат работы этого примера: #0 = Джон #1 = Барбара #2 = Билл #3 = Нэнси
reset() В РНР итерации по массиву организуются с помощью внутреннего указателя, который хранит текущую позицию в массиве. Функцию reset () необходимо вызывать для массива, прежде чем начинать его обход функцией each(), что не требуется в случае применения foreach(). Вообще лучше везде, где это возможно, применять именно fоreach(), не разводя канитель с each().
each() Функция each () возвращает текущую пару ключ/значение и передвигает внутренний указатель на следующий элемент массива. Если был достигнут конец массива, возвращается значение false. Массив, который возвращается функцией each(), состоит из четырех элементов: элементы 0 и "key" представляют собой ключ, а элементы 1 и "value" - значение. Это дает возможность обращаться к элементам массива не только по числовым индексам, но и по достаточно благозвучным именам, например так: $elem[ "key" ] и $elem[ "value"]. Sages = аrrау ("Джон" => 28, "Барбара" => 67); reset(Sages); $person = each($ages); print $person["key"]; print " имеет возраст "; print $person["value"]; print " лет";
Этот код напечатает: Джон имеет возраст 28 лет Назначение смещений 0 и 1 станет понятным, когда мы рассмотрим работу конструкции list().
Iist() Конструкция list () позволяет присваивать значения элементов массива нескольким переменным за один прием: list($var1, $var2, $var3, ...) = $array; Первая переменная из списка получит значение нулевого элемента массива, вторая - первого, третья - второго и т. д. Таким образом, конструкция list() может быть представлена в виде нескольких выражений: $var1 = $array[0]; $var2 s $array[1]; $var3 = $array[2]; Упоминавшиеся ранее элементы массива с индексами 0 и 1, возвращаемые функцией each(), используются оператором list(). Вероятно, вы уже догадались, как работает связка list() - each(). Рассмотрим подробнее строку из предыдущего примера, где рассматривался обход массива $players, ниже она выделена жирным шрифтом: Splayers = аrrау ("Джон", "Барбара", "Билл", "Нэнси"); reset($players); while (list($key, $val) = each($players)) { print "#$key = $val\n"; } На каждой новой итерации функция each() возвращает массив, в котором находится пара ключ/значение для текущего массива (в данном случае - для массива $players). Оператор list() записывает 0-й элемент массива в переменную $key, a 1-й элемент массива - в переменную $val. Распечатав содержимое возвращаемого массива с помощью функции print_r(), мы получим примерно следующее: Array ( [1] => Джон [value] => Джон [0] => 0 [key] => 0)
|
|
|
|