Змінні і масиви. Взаємні переходи Упаковка змінних в масив. Функція compact() Функція compact() «упаковує» icon

Змінні і масиви. Взаємні переходи Упаковка змінних в масив. Функція compact() Функція compact() «упаковує»



НазваниеЗмінні і масиви. Взаємні переходи Упаковка змінних в масив. Функція compact() Функція compact() «упаковує»
Дата конвертации20.05.2013
Размер32.5 Kb.
ТипДокументы

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

Упаковка змінних в масив. Функція 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 "CueHapnH files.php"; echo "<Ь1>Содержимое каталога /

";

foreach($Files as $f)

if (is_dir($f)) echo "
$f"; else echo "
$f";

echo "";

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

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

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





Похожие:

Змінні і масиви. Взаємні переходи Упаковка змінних в масив. Функція compact() Функція compact() «упаковує» iconMd5() і crc32(). Функція md5()
Функція md5() кодує рядок, використовуючи алгоритм md5 (Message Digest Algorithm). Якщо бути гранично точним, то функція md5() повертає...
Змінні і масиви. Взаємні переходи Упаковка змінних в масив. Функція compact() Функція compact() «упаковує» iconЛабораторнаробота n 5 Робота з масивами та рядками символів
Визначення типу "масив" не приводить до виділення пам'яті під масив. Пам'ять під масив виділяється компілятором при оголошенні змінних...
Змінні і масиви. Взаємні переходи Упаковка змінних в масив. Функція compact() Функція compact() «упаковує» iconМодель — спосіб абстрактного відображення фактичної пове­дінки досліджуваних явищ в економіці. Нормативна функція макроекономіки
Нормативна функція макроекономіки — спрямованість мак-роекономіки на обґрунтування рекомендацій щодо подальшого роз­витку національної...
Змінні і масиви. Взаємні переходи Упаковка змінних в масив. Функція compact() Функція compact() «упаковує» iconПравила задання змінних Типи даних Функції визначення І завдання типу змінних. Логічні змінні І їх особливості в рнр
Практично у всіх мовах програмування є таке поняття, як змінна. Чому я спожив вираз «Практично у всіх»? Існують І такі мови, в яких...
Змінні і масиви. Взаємні переходи Упаковка змінних в масив. Функція compact() Функція compact() «упаковує» iconПоняття функції від багатьох змінних. Лінії рівня
На практиці досить часто функція y залежить не від однієї змінної x, а від багатьох аргументів x1,…,xn
Змінні і масиви. Взаємні переходи Упаковка змінних в масив. Функція compact() Функція compact() «упаковує» iconТЕма : Поняття та суть виробничої функції Виробнича функція з двома змінними факторами. Ізокванта. Виробнича функція з одним змінним фактором.
Продовжуючи заміщення посівних площ ще більшою кількістю міндобрива, він може перейти до ситуації, яку відображає точка r графіка,...
Змінні і масиви. Взаємні переходи Упаковка змінних в масив. Функція compact() Функція compact() «упаковує» iconЛекція №12 Тема: Масиви об’єктів, покажчики на об’єкти
В мові C++ масиви можуть складатися з об'єктів. З синтаксичної очки зору оголошення масиву об'єктів нічим не відрізняється від оголошення...
Змінні і масиви. Взаємні переходи Упаковка змінних в масив. Функція compact() Функція compact() «упаковує» iconФормула Ньютона – Лейбніца
У курсі математичного аналізу доводиться, що неперервна на відрізку[ a; b]функція y=ƒ(x )досягає на цьому найбільшого і найменшого...
Змінні і масиви. Взаємні переходи Упаковка змінних в масив. Функція compact() Функція compact() «упаковує» iconЛекція №4 Тема: Одновимірні та багатовимірні масиви
Наприклад, int а[10]; визначає масив з 10 елементів а[0], а[1] а[9]. float Z[13][[6]; визначає двовимірний масив, пер­ший індекс...
Змінні і масиви. Взаємні переходи Упаковка змінних в масив. Функція compact() Функція compact() «упаковує» iconПлан Первісна функція Неозначений інтеграл Основні властивості неозначеного інтеграла Таблиця основних інтегралів Тільки допустивши нескінченно малу (величину) для спостереження – диференціал історії,
Первісна функція і неозначений інтеграл. Основні властивості неозначеного інтеграла. Таблиця основних інтегралів
Разместите кнопку на своём сайте:
Документы


База данных защищена авторским правом ©zazdoc.ru 2000-2014
При копировании материала обязательно указание активной ссылки открытой для индексации.
обратиться к администрации
Документы