
- •Лабораторная работа № 8 Массивы и списки в php.
- •1.1Массивы и списки.
- •1.1.1Понятие массива
- •1.1.2Понятие списка
- •1.2 Ассоциативные массивы
- •1.3 Инструкции list()
- •1.4 Инструкция array() и создание многомерных массивов
- •1.6Перебор массива
- •1.6.1Косвенный перебор
- •1.6.2Прямой перебор
- •1.6.3Недостатки косвенного перебора
- •1.7 Сортировка массивов
- •1.7.1Сортировка массивов по ключам. Функции ksort() и krsort()
- •1.7.2Сортировка списка
- •1.7.3Переворачивание массива.
- •1.7.4Перемешивание списков.
- •1.7.5Пользовательская сортировка массивов
- •1.8Получение части массива
- •1.9Добавление и удаление элементов массива
- •1.9.1Добавление в конец массива
- •1.9.2Удаление последнего элемента списка
- •1.9.3Добавление в начало списка. Удаление первого элемента списка
- •1.9.4Функция array_unique()
- •1.10Переменные и массивы. Взаимные переходы
- •1.10.1 Упаковка переменных в массив. Функция compact()
- •1.10.2 Разупаковка (извлечение) переменных из массива.
- •1.11Создание диапазона чисел
- •1.12Небольшой практический пример
- •1.13Задание
1.9.4Функция array_unique()
Функция array_unique() предназначена для извлечения уникальных значений массива вместе с ключами этих значений. Вот пример применения этой функции:
$Arr = array("a"=>"AAA","b"="BBB","с","d","e"="BBB", "d");
$Unique_Arr = array_unique($Arr);
// $Unique_Arr = array("a"=>"AAA","b" = "BBB", "c", "d") ;
1.10Переменные и массивы. Взаимные переходы
1.10.1 Упаковка переменных в массив. Функция compact()
Функция compact() «упаковывает» переменные и их значения в массив. B результате получается ассоциативный массив, ключами которого являются имена переменных, а значениями элементов — значения переменных Рассмотрим сказанное на примере. Предположим, что у нас есть две переменные:
$Name = "Вася";
$Email = "vasya@vvv.org";
Функция compact("Name","Email") упакует переменные в один массив:
$А = compact("Name","Email");
//получаем $А =array("Name"=>"Вася", "Email"=>"vasya@vvv.org");
Параметры функции compact() описаны как mixed, потому что параметры могут быть не только строками, но и списками строк. Если так оно и есть, функция перебирает все элементы этого списка и упаковывает переменные, имена которых она встретила. Вот небольшой пример:
$а = "ААА";
$Ь = "ВВВ";
$с = "ССС";
$Arr = array("b","с");
$Massiv = compact("a",$Arr);
// $Massiv = array("a"=>"AAA","b" = "BBB","c" = "CCC") ;
1.10.2 Разупаковка (извлечение) переменных из массива.
Функция extract () Существует функция, противоположная функции compact() — это функция extract(). Она действует «с точностью до наоборот», то есть создает переменные с именами, соответствующими именам ключей и присваивает им значения элементов массива. Распакуем наш «упакованный массив»:
extract($A);
В процессе распаковки может оказаться, что уже существует переменная с именем, как имя ключа в массиве $А. Для решения этой проблемы у функции extract() предусмотрен второй параметр, который позволяет определить поведение функции extract() в случае совпадения имен. Значение EXTR_OVERWRITE означает, что существующая переменная с именем ключа будет перезаписана, a EXTR_SKIP — пропущена:
$Name = "Вася";
$Email = "vasya@vvv.org";
$А = compact("Name","Email") ;
$Name = "Ivan";
extract($A,EXTR_OVERWRITE); // $Name = "Ivan", так как мы
//указали EXTR_OVERWRITE
Значение EXTR_OVERWRITE используется по умолчанию и может не указываться. То есть достаточно указать extract($A) и все переменные будут перезаписаны. Кроме того, в PHP предусмотрено еще одно значение второго параметра функции extract() — это значение EXTR_PREFIX_ALL. В этом случае при разупаковке массива все имена создаваемых переменных будут предварены специальным префиксом, который нужно будет указать в качестве третьего параметра функции extract(). Например, если мы в рассмотренном выше примере разупаковку произведем следующим образом:
extract($A,EXTR_PREFIX_ALL, "D_");
то на выходе будут созданы переменные $D_Name и $D_Email, то есть при создании переменных к имени ключа присоединится указанный префикс D_.
1.11Создание диапазона чисел
Иногда нужно создать диапазон чисел, например, для нумерации записей в выводимой таблице. Создать диапазон чисел можно очень просто:
$List = array();
for($i=10; $i<=100; $i++) $List[]=$i;
Данный цикл создает список, заполненный целыми числами от 10 до 100 включительно. В PHP можно обойтись значительно проще — одним вызовом функции range(10, 100).