Скачиваний:
31
Добавлен:
04.04.2013
Размер:
94.21 Кб
Скачать

Массивы

Массив – совокупность переменных, объединенных одним именем. Переменные, входящие в состав массива называются элементами массива. Элементом массива в PHP может быть число (как простое, так и вещественное), строка или другой массив (массив, содержащий элементы-массивы называется многомерным). В отличие от большинства строго типизированных языков программирования (таких как C или Паскаль), в РНР массивы могут держать элементы нескольких разных типов одновременно. Каждый элемент массива может принадлежать любому типу данных независимо от типа данных других элементов.

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

В PHP не ассоциативные массивы индексируются, начиная с нулевого элемента (элемента с индексом 0). Существует несколько способов инициализации не ассоциативных массивов.

$countries[]="ru";

$countries[]="de";

$countries[]="ua";

$countries[0]="ru";

$countries[1]="de";

$countries[2]="ua";

$countries=array ("ru","de","ua");

В первом случае создается массив из трех элементов. Поскольку индексы не указаны яв­но, элементам даются индексы по умол­чанию: 0, 1 и 2.

Во втором примере массив задан с явным указанием индексов.

Третий пример демонстрирует способ задания массива при помощи конструкции array

Обычно удобно присваивать индексы в последовательном порядке, как было сделано выше. Однако при необходимости порядок задания индексов может быть произвольным

$countries[50]="ru";

$countries[20]="de";

$countries[10]="ua";

$countries = array (1=>"cr", 2=>"de", 5=>"ua");

Одной из наиболее часто встречающихся операций, производимой с массивом, является обход его элементов в цикле в сочетании с модификацией или выводом их (элементов) значений. Простейший способ сделать обход элементов не ассоциативного массива заключается в использовании цикла for и функции count, вычисляющей количество элементов в массиве.

$countries = array ("ru","de","ua");

$number=count($countries);

for ($i=0;$i<$number; $i++) {

echo $countries[$i]." ";

}

В результате работы этой программы будет выведена строка “ru de ua”.

Массивы могут использовать в качестве индексов строки (ключи). Такие массивы называются ассоциативными. Существую два способа задания ассоциативных массивов.

$countries["ru"]="Россия";

$countries["de"]="Германия";

$countries["ua"]="Украина";

$countries=array("ru"=>"Россия",

"de"=>"Германия",

"ua"=>"Украина");

Обращение к элементу массива осуществляется только через его ключ. К элементам ассоциативного массива невозможно обратиться при помощи числового индекса.

Для того, чтобы осуществить обход элементов ассоциативного массива, необходимо воспользоваться вспомогательными функциями.

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

$countries=array("ru"=>"Россия",

"de"=>"Германия",

"ua"=>"Украина");

while (list($key,$value)=each($countries)) {

echo $key.' '.$value.'<br>';

}

Функция each в качестве параметра получает массив и выводит информацию об элементе, на который указывает внутренний курсор. Информация об элементе массива будет представлена в виде массива, состоящего из четырех элементов.

Если в приведенном выше примере сразу после описания массива добавить строку

$arr=each($countries)

то в результате будет создан массив $arr, содержащий следующие значения:

  1. Первый элемент имеет индекс 0 и значение ru.

  1. Второй элемент имеет индекс 1 и значение Россия.

  2. Третий элемент имеет индекс "key" и значение ru.

  3. Четвертый элемент имеет индекс "value" и значение Россия.

После выполнения функции each внутренний курсор будет автоматически переведен на следующий элемент массива. После прохождения последнего элемента массива, при попытке вызова функция each возвратит значение "ложь".

Функция list используется для присвоения значений элементов массива заданным пере­менным. Вызов функции выглядит довольно необычно и больше похож на встроенную конструкцию языка PHP: list(перем1,..,перемN)=массив. Списку переменных, описанных при вызове функции list приравнивается массив, значениями элементов которого будут инициализированы описанные переменные.

Количество переменных, описанных при вызове функции list, может быть меньше, чем количество элементов массива. Заполнение значений переменных начинается с первого элемента массива.

В приведенном выше примере функция each формирует массив на основе информации, полученной об активном (выделенном внутренним курсором) элементе массива $countries. Функция list выбирает первые два значения сформированного массива и присваивает их переменным $key и $value. В результате, получены ключ и значение одного из элементов массива $countries. После выполнения функции each внутренний курсор массива сдвигается на один элемент. Цикл выполняется до тех пор, пока не будет пройден весь массив $countries.

Файлы

Открытие файлов осуществляется при помощи функция fopen. В общем виде вызов функции выглядит следующим образом:

Соседние файлы в папке 3_Язык РНР