Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
WEB - Лабораторная работа_3 - PHP.pdf
Скачиваний:
90
Добавлен:
26.03.2015
Размер:
232.72 Кб
Скачать

$Реор1е[2] = "Петр";

Теперь допустим, что в какой-то момент нам необходимо передать значения всех трех элементов массива, соответственно, трем переменным Slvanov, $Sidorov, $Petrov, в которые мы хотим записать имена Иванова, Сидорова и Петрова. Это можно сделать так:

$Ivanov = $People[0]; $Sidorov = $People[l]; $Petrov = $People[2];

Согласитесь, что если массив большой, то такой подход не очень удобен. Существует более рациональное решение — использовать инструкцию Iist(), которая специально для этого предназначена: list($Ivanov,$Sidorov,$Petrov) = $People; Если же нам нужны имена только Сидорова и Петрова, первый параметр можно пропустить: list(, $Sidorov,$Petrov) = $People;

4. Инструкция array() и создание многомерных массивов

Инструкция аггауО используется специально для создания массивов. При этом она позволяет создавать пустые массивы, чего никак нельзя сделать рассмотренными ранее механизмами. Методы использования инструкции аггау() рассмотрим на следующих примерах: $А = аггауО; // создает пустой массив $А = array("Иванов"=>"Иван","Петров"=>"Петр"); // создает ассо // циативный массив с двумя элементами $А = array("Иванов","Петров"); // создает список с двумя //

элементами. Индексы нумеруются с нуля. Инструкцию аггауО удобно использовать для создания многомерных массивов. Предположим, что мы хотим создать массив, элементами которого будут ассоциативные массивы с ключами name, sex и email.

Создать такой массив можно с помощью следующих операторов:

$A["Ivanov"] = array ("пате"=>"Иванов И.", "sex" = >"M", "email" => "ivanov@mail.ru");

$А["Petrov"] = array ("name"=>"Петров И.", "sex"=>"M", "email" => "petrov@mail.ru");

$A["Sidorova"] = array ( "пате" = >"Сидорова . H", "sex"=>"F", "email" => "sidorova@mail.ru");

Это же самое можно записать в следующем виде:

$А = array (

"Ivanov" = array("пате"=>"Иванов И.", "sex"=>"M", "email" => "ivanov@mail.ru") ,

"Petrov" = array("пате"=>"Петров И.", "sex"=>"M", "email" => "petrov@mail.ru") ,

"Sidorova" = array ("пате"=>"Сидорова. H", "sex"=>"F", "email" => "sidorova@mail.ru")

) ; '

Добраться до элементов массива можно так:

echo $A["Ivanov"]["name"]; // выведет Иванов И.

echo $A["Ivanov"]["email"]; // выведет ivanov@ivanov.org

Многомерные массивы в PHP больше положи на записи (record) в языке PascaJ или структуры в языке С, чем на многомерные массивы в обычном понимании.

5. Операции над массивами

Мы уже познакомились с основной операцией над массивами — доступ по ключу, поэтому рассматривать ее сейчас я не вижу смысла. Сейчас мы рассмотрим три операции

смассивами:

* Удаление. * Слияние. * Перебор.

5.1. Удаление массивов

Для удаления массива, как и любой другой переменной, используется уже знакомая нам функция UnSet(): UnSet ($People); Обычно удаление может потребоваться для очень большого массива, чтобы освободить используемую им память.

5.2. Слияние массивов Стандартное слияние

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

Итак, пусть у нас есть два массива:

$А = array ("1"=>"первый","2"=>"второй") ; $В = array ("3"=>"третий","4"=>"четвертый");

Теперь, давайте сольем эти два массива в один массив $С: $С = $А + $В;

Сразу нужно сказать, что оператор «+» для массивов не коммутативен, а это значит, что $А + $В не равно $В + $А. В результате слияния $А + $В мы получим:

"1"=>"первый" , "2"=>"второй","3"=>"третий","4"=>"четвертый" // именно в таком порядке А в результате $В + $А, получим такой массив:

"3"=>"третий" , "4"=>"четвертый","1"=>"первый","2"=>"второй"

Особенно внимательным нужно быть при слиянии списков. Предположим, у нас опять есть два массива:

$А = array(10, 11,12) ; $В = array(15,17,18) ;

В результате слияния $С = $А + $В мы получим следующий массив:

10,11,12

Неожиданный результат неправда ли. Скорее всего вы ожидали получить массив array (10, 11, 12, 15, 17, 18). Однако в PHP на этот счет свои правила. При слиянии массивов, в которых содержатся элементы с одинаковыми индексами (ключами), в результирующем массиве останется элемент первого массива, причем на том же самом месте. А в приведенном примере элементы массива $А имели индексы 1, 2, 3 и элементы массива $в имели индексы 1, 2, 3. А поскольку массив $А при сложении стоит первым, то его элементы и являются результирующими. Можете убедиться в этом еще раз следующим образом: $А = array(10,11,12); SB = array(15,17,18); $А = $А + $В; // или $А += $В; В этом примере элементы массива $А не изменятся. Изменить элементы массива можно только при помощи прямого перебора (см. следующий раздел).

Слияние с помощью функции array_merge() Функция array_merge() предназначена для слияния двух массивов. Причем при слиянии массивов эта функция устраняет все недостатки оператора +. Она соединяет массивы, переданные ей в качестве аргументов, в один большой массив. Если в соединяемых массивах встречаются одинаковые ключи (ключ=>значение), то в результирующий массив помещается пара ключ=>значение из массива, который стоит правее в списке аргументов функции array_merge(). Однако это правило не затрагивает списки, то есть массивы с числовыми индексами. В этом случае элементы с повторяющимся числовым индексом помещаются в конец результирующего массива в любом случае.

Проиллюстрируем сказанное примером:

$А = array(10,11,12); $В = array(15,17,18);

Соседние файлы в предмете Программирование для Web