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).


 

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

76424. Колебательное звено 120.05 KB
  Колебания будут затухать с течением времени т. В автоматических системах различают свободные и вынужденные колебания. Вынужденные колебания выходной величины звена возникают из-за колебаний воздействия например при синусоидальном воздействии. Колебания переходной функции колебательного звена это свободные колебания: воздействие на звено не периодическое а колебания возникают из-за собственных колебательных свойств звена.
76425. Запаздывающее звено и его свойства 45.78 KB
  Переходную функцию звена получим решив уравнение. Переходная характеристика звена приведена на рисунке. Переходная характеристика запаздывающего звена Импульсная переходная функция запаздывающего звена имеет вид: Импульсная переходная характеристика запаздывающего звена представлена...
76426. Виды соединений звеньев САУ 50.49 KB
  Соединение звеньев в САУ может выполняться в 3-х основных формах: последовательная, параллельная и соединение с обратной связью. Последовательное соединение звеньев (a)
76427. Правила преобразования структурных схем 90.16 KB
  Критерий правильности упрощения схемы заключается в равенстве входных и выходных сигналов упрощаемого участка до и после преобразования. Перенос сумматора через сумматор: а до преобразования; б после преобразования. Перенос узла через сумматор: а до преобразования; б после преобразования.
76428. Условия устойчивости линейных систем автоматического управления 93.58 KB
  Изменение регулируемой величины при произвольном внешнем воздействии представляет собой решение уравнения 3.22 первое слагаемое вынужденная составляющая имеющая тот же характер что и правая часть уравнения 3. Она определяется как частное решение неоднородного дифференциального уравнения 3.21 с правой частью: Второе слагаемое свободная переходная составляющая которая определяется общим решением однородного дифференциального уравнения 3.
76429. Критерий устойчивости Гурвица 61.79 KB
  Поэтому большее распространение получил алгебраический критерий устойчивости сформулированный в 1895 году математиком А. Критерий устойчивости сводится к тому что при должны быть больше нуля все определителей Гурвица получаемых из квадратной матрицы коэффициентов. Условия нахождения системы на границе устойчивости можно получить приравнивая нулю последний определитель: при положительности всех остальных определителей.
76430. Критерий устойчивости Михайлова 37.19 KB
  Критерий устойчивости Михайлова. 21: чтобы замкнутая система была устойчивой необходимо и достаточно чтобы годограф характеристического многочлена замкнутой системы годограф Михайлова начинался на положительной части действительной оси и проходил последовательно в положительном направлении исключая точку начала координат n квадрантов комплексной плоскости где n порядок характеристического уравнения. Графическое изображение годографов Михайлова для устойчивых и неустойчивых систем Практический пример Пусть характеристическое уравнение...
76431. КРИТЕРИЙ УСТОЙЧИВОСТИ НАЙКВИСТА 155.49 KB
  Предварительно должна быть определена устойчивость исследуемой системы в разомкнутом состоянии. Для неустойчивой разомкнутой системы нужно выяснить какое число корней ее характеристического полинома имеет положительные вещественные части. В одноконтурной системе составленной из последовательно соединенных звеньев корни характеристических полиномов этих звеньев являются одновременно корнями характеристического полинома разомкнутой системы. Если какоелибо звено в прямой цепи системы охвачено обратной связью то нужно определить корни...
76432. Структурные схемы систем автоматического управления 160.04 KB
  Структурная схема Структурная схема САУ схема САУ это изображение системы регулирования в виде совокупности динамических звеньев с указанием связей между ними. Структурная схема САУ может быть составлена на основе известных уравнений системы и наоборот уравнения системы могут быть получены из структурной схемы. Наименование Обозначение на структурной схеме Звено с одним входом Звено с двумя входами Узел разветвление Наименование Обозначение на структурной схеме Cумматор Элемент сравненияаналог сумматора Простейшие сочетания...