69697

Змінні і масиви. Взаємні переходи

Лекция

Информатика, кибернетика и программирование

Упаковка змінних в масив. Функція compact() Функція compact() «упаковує» змінні і їх значення в масив. В результаті виходить асоціативний масив, ключами якого є імена, змінних, а значеннями елементів — значення змінних.

Украинкский

2014-10-08

68 KB

0 чел.

Тема 17:  Змінні і масиви. Взаємні переходи

Упаковка змінних в масив. Функція compact()

Функція compact() «упаковує» змінні і їх значення в масив. В результаті виходить асоціативний масив, ключами якого є імена, змінних, а значеннями елементів — значення змінних.

Розглянемо сказане на прикладі. Припустимо, що у нас є дві змінні:

$Name = "Вася"-;

$Email = "vasya@vvv.org";

Функція compact("Name",''Email") упакує змінні в один масив:

$А   =   compact("Name","Email");

//отримуємо      $A   =array("Ыате"=>"Вася","Email"=>"vasyaSvvv.org");

Параметри функції compact() описані як mixed, тому що параметри можуть бути не тільки рядками, але і списками рядків. Якщо так воно і є, функція перебирає всі елементи цього списку і упаковує змінні, імена яких вона зустріла. Ось невеликий приклад:

$а   =   "AAA";

$b   =   "BBB";

$с   =   "CCC";

$Arr   =   array("b","с");

$Massiv   =   compact("a",$Arr);

//   $Massiv   =   array("a"=>"AAA","b"="BBB","c"="CCC");

Разупаковка (витягання) змінних з масиву. Функція extract()

Існує функція, протилежна функції compact() — це функція extract(). Вона діє «з точністю до навпаки», тобто створює змінні з іменами, відповідними іменам ключів і привласнює їм значення елементів масиву.

Розпакуємо наш «упакований масив»:

extract($A);

В процесі розпаковування може опинитися, що вже існує змінна з ім'ям, як ім'я ключа в масиві $А. Для вирішення цієї проблеми у функції extract() передбачений другий параметр, який дозволяє визначити поведінку функції extract() у разі збігу імен. Значення EXTR_OVERWRITE означає, що існуюча змінна з ім'ям ключа буде перезаписана, а EXTR_SKIP — пропущена:

• $Name = "Вася"; $Email = "vasya@vvv.org"; $А = compact("Name","Email"); $Name = "Ivan";

extract($A,EXTR_OVERWRITE);   // $Name = "Ivan", оскільки ми

//вказали EXTR_OVERWRITE

Значення EXTR_OVERWRITE використовується за умовчанням і може не указуватися. Тобто досить вказати extract(SA) і всі змінні будуть перезаписані. Крім того, в PHP передбачено ще одне значення другого параметра функції extract() — це значення EXTR_PREFIX_ALL. В цьому випадку при разупаковке масиву всі імена створюваних змінних передуватимуть спеціальним префіксом, який потрібно буде вказати як третього параметра функції extract().

Наприклад, якщо ми в розглянутому вище прикладі разупаковку проведемо таким чином:

extract($A,EXTR_PREFIX_ALL,    "D_");

то на виході будуть створені змінні $D_Name і $D_Email, тобто при створенні змінних до імені ключа приєднається вказаний префікс D_.

7.10. Створення діапазону чисел

Іноді потрібно створити діапазон чисел, наприклад, для нумерації записів в таблиці, що виводиться. Створити діапазон чисел можна дуже просто:

$List   =   array();

for($i = 10;    $ i < = 10 0;    $i + +)    $List[]=$i;

Даний цикл створює список, заповнений цілими числами від 10 до 100 включно. У PHP можна обійтися значно простіше — одним викликом функції range(10, 100).

7.11.   Невеликий практичний приклад

Спробуємо написати сценарій, що виводить вміст каталога. Причому сценарій винен не просто виводити вміст каталога, а в алфавітному порядку і каталоги повинні передувати файлам (див. лістинг 7.2). Ми використовуватимемо раніше написану і приведену в лістингу 7.1 функцію cmp(), яка порівнює файли і каталоги.

Лістинг 7.2. Сценарій files.php

//   Отримуємо   вміст   поточного   каталога.   Для   нашого   сценарію поточним   буде   каталог   /var/www/html //    ($DocumentRoot) exec("ls   -1",$Files);

function   cmp($el_l,$el_2)

{

if    (is_dir(5el_l)   &&    !is_dir($el_2))       return   -1;

if    (!is_dir($el_l)   &&   is_dir($el_2))       return   1;

if($el_K$el_2)    return   -1;

elseif($el_l>$el_2)    return   1;

else   return   0; }

uasort($Files,"cmp") ;

echo   "<html><title>CueHapnH   files.php</title><body>"; echo      "<Ь1>Содержимое   каталога   /</hl><p>";

foreach($Files   as   $f)

if    (is_dir($f))      echo   "<br><img   src=folder.png>$f"; else   echo   "<br><img   src=doc.png>$f";

echo   "</body></html>";

Розберемося, як працює сценарій. Спочатку ми формуємо список файлів і каталогів. Можна було б скористатися стандартними функціями PHP, але набагато простіше (у Linux) викликати команди ls з параметром —1 (висновок в одну колонку). Функція exec() викликає команду ls і записує її висновок в список $Files.

Потім ми викликаємо функцію uasort(), яка сортує наш список в потрібному нам порядку — спочатку вона сортує каталоги в алфавітному порядку, а потім — файли. В результаті ми отримуємо список, в якому спочатку йдуть каталоги, відсортовані за абеткою, а потім — файли (теж відсортовані за абеткою).

У циклі foreach ми аналізуємо елемент нашого списку: якщо він є каталогом, ми виводимо поряд з його ім'ям картинку теки, а якщо файлом — картинку документа (див. мал. 7.1).


 

А также другие работы, которые могут Вас заинтересовать

19933. СОЦІОЛОГІЯ ОСОБИСТОСТІ 84.5 KB
  ЛЕКЦІЯ 5 СОЦІОЛОГІЯ ОСОБИСТОСТІ П Л А Н 1. Поняття особистості у соціології. 2. Особистість як обєкт і субєкт суспільних відносин. 3. Основні соціологічні теорії особистості. 4. Соціологічна структура особистості. 1. Поняття особистості у соціології Термін о...
19934. СОЦІАЛІЗАЦІЯ ОСОБИСТОСТІ В СУСПІЛЬСТВІ 110 KB
  Під соціалізацією в сучасній соціології зазвичай розуміють процес засвоєння індивідом зразків поведінки, психологічних механізмів, соціальних норм і цінностей, необхідних для успішного функціонування індивіда в даному суспільстві.
19935. СОЦІОЛОГІЯ ШЛЮБУ І СІМ’Ї 122.5 KB
  ТЕМА 9 СОЦІОЛОГІЯ ШЛЮБУ І СІМЇ ПЛАН 1. Поняття шлюбу та сімї. 2. Соціальні функції сімї. 3. Тенденції проблеми та тенденції розвитку сучасної сімї. 1. Поняття шлюбу та сімї Сім'я являє собою об'єднання людей пов'язаних спільністю побуту та взаємною відповідал...
19936. ПОНЯТТЯ ТА РІЗНОВИДИ СОЦІОЛОГІЧНИХ ДОСЛІДЖЕНЬ 104 KB
  ЛЕКЦІЯ 17 ПОНЯТТЯ ТА РІЗНОВИДИ СОЦІОЛОГІЧНИХ ДОСЛІДЖЕНЬ ПЛАН 1. Сутність та вимоги до соціологічного дослідження. 2. Типологія соціологічних досліджень. 3. Програма та робочий план соціологічного дослідження. 1. Сутність та вимоги до соціологічного дослідження ...
19937. МЕТОДИ ПРОВЕДЕННЯ СОЦІОЛОГІЧНОГО ДОСЛІДЖЕННЯ 142 KB
  Перші згадування про проведення опитувань відносяться до часів Стародавнього світу. Як правило, вони пов'язувалися із встановленням чисельності населення, яке здатне носити зброю і сплачувати податки. Становлення опитування як наукового методу здобуття інформації відноситься до кінця XIX століття. Саме у цей період відбуваються масові переписи населення, ведеться облік врожаїв, худоби, землі, засобів виробництва, збирається інформація з моральної статистики тощо.
19938. Интеллектуальная собственность. Основы Авторского Патентного Права 15.13 KB
  Лекция №1 Тема: Интеллектуальная собственность Предмет: Основы Авторского Патентного Права. Потребность общества в тех или иных предметах потребления движет прогресс намного быстрее чем десятки университетов. Появление живописи в свое время привело к современно
19939. Произведения, не охраняемые авторским правом. Виды авторского права 21.05 KB
  Лекция №2 Тема: Произведения не охраняемые авторским правом. Виды авторского права. Не охраняется авторским правом: сообщения о новостях дня или текущих событиях имеющие характер обычной прессинформации; произведения народного творчества фольклор; изд
19940. Таможенная граница. Регистрация объектов ИС 18.34 KB
  Лекция №3 Тема: таможенная граница. Товары которые содержат объекты интеллектуальной собственности ИС импортируются или экспортируются. Украинскими или иностранными субъектами предпринимательской внешнеэкономической деятельности независимо от форм собственнос...