- •Лекція Основи програмування на php Що таке php
- •Інструментарій Мінімальна програма
- •Синтаксис
- •Основний синтаксис
- •Поділ інструкцій
- •Коментарі
- •Змінні, константи й оператори
- •Типи даних
- •Тип float (числа з плаваючою крапкою)
- •Тип string (рядки)
- •Одинарні лапки
- •Подвійні лапки
- •Тип array (масив)
- •Прості масиви та списки в php
- •Прості одномірні масиви:
- •Прості багатовимірні масиви:
- •Асоціативні масиви в php
- •Багатовимірні асоціативні масиви:6
- •Керуючі конструкції
- •Оператор else
- •Оператор elseif
- •Оператор switch
- •Оператори передачі управління
- •Оператори включення
- •Альтернативний синтаксис
- •Функції користувача
- •Аргументи функцій
- •Списки аргументів змінної довжини
- •Використання змінних всередині функції
- •Статичні змінні
- •Значення, що повертаються
- •Повернення посилання
- •Змінні функції
- •Символічні і жорсткі посилання
- •Жорсткі посилання в php
- •Символічні посилання (змінні на змінні)
- •Жорсткі посилання і призначені для функцій користувача Передача значень за посиланням
- •Повернення значень за посиланням
- •Видалення посилань (скидання посилань)
Використання змінних всередині функції
Глобальні змінні
Щоб використовувати всередині функції змінні, задані поза нею, ці змінні потрібно оголосити як глобальні. Для цього в тілі функції слід перерахувати їх імена після ключового слова global:
global $ var1, $ var2;
Приклад 26. Глобальні змінні
<?
$a = 1;
function Test_g () {
global $a;
$a = $a * 2;
echo 'в результаті роботи функції $ a =', $a;
}
echo 'поза функції $a =', $a, ',';
Test_g ();
echo "<br>";
echo 'поза функції $a =', $a, ',';
Test_g (); ?>
У результаті роботи цього скрипта одержимо:
поза функції $a = 1, в результаті роботи
функції $a = 2
поза функції $a = 2, в результаті роботи
функції $a = 4
Коли змінна оголошується як глобальна, фактично створюється посилання на глобальну змінну. Тому такий запис еквівалентний наступному (масив $GLOBALS містить всі змінні, глобальні щодо поточної області видимості):
$Var1 = & $GLOBALS ["var1"];
$Var2 = & $GLOBALS ["var2"];
Це означає що видалення змінної $var1 не видаляє глобальної змінної $GLOBALS ["var1"].
Статичні змінні
Щоб використовувати змінні тільки всередині функції, при цьому зберігаючи їх значення і після виходу з функції, потрібно оголосити ці змінні як статичні. Статичні змінні видно тільки всередині функції але вони не втрачають свого значення, якщо виконання програми виходить за межі функції. Оголошення таких змінних проводиться за допомогою ключового слова static:
static $var1, $var2;
Статичній змінній може бути присвоєно будь-яке значення, але не посилання.
Приклад 27. Використання статичної змінної
<?
function Test_s () {
static $a = 1;
// Можна присвоювати вираз або посилання
$a = $a * 2;
echo $a;
}
Test_s (); // виведе 2
echo $a; // нічого не виведе, так як
// $a доступна тільки
// Всередині функції
Test_s (); // всередині функції $a = 2, тому
// Результатом роботи функції
// Буде число 4
?>
Значення, що повертаються
Всі функції, наведені вище в якості прикладів, виконували будь-які дії. Окрім подібних дій, будь-яка функція може повертати як результат своєї роботи якесь значення. Це робиться за допомогою return. Значення, що повертається може бути будь-якого типу, включаючи списки і об'єкти. Коли інтерпретатор зустрічає команду return у тілі функції, він негайно припиняє її виконання і переходить на той рядок, з якої була викликана функція.
Наприклад, складемо функцію, яка повертає вік людини. Якщо людина не померла, то вік вважається відносно поточного року.
<? Php
/* Якщо другий параметр передається він сприймається як true, то він розглядається як дата смерті, */
function Age ($birth, $is_dead) {
if ($is_dead) return $is_dead-$ birth;
else return date ("Y") - $birth;
}
echo Age (1971, false); // для 2009 року виведе 38
echo Age (1971, 2001); // виведе 30
?>
У цьому прикладі можна було і не використовувати функцію return, а просто замінити її функцією виведення echo. Проте якщо ми все-таки робимо так, що функція повертає якесь значення (у даному випадку вік людини), то в програмі ми можемо присвоїти будь-якій змінній значення цієї функції:
$An_age = Age (1981, 2004);
У результаті роботи функції може бути повернуто лише одне значення. Кілька значень можна отримати, якщо повертати список значень (одновимірний масив). Припустимо, ми хочемо отримати повний вік людини з точністю до дня.
<? Php
function Full_age ($ b_day, $ b_month, $ b_year)
{
$y = date ("Y");
$m = intval (date ("m"));
$d = intval (date ("d"));
$B_month = intval($ b_month);
$B_day = intval($ b_day);
$B_year = intval($ b_year);
$day = ($b_day> $d? 30 - $b_day + $d: $d - $b_day);
$tmpMonth = ($b_day> $d? -1: 0);
$month = ($b_month> $m + $tmpMonth? 12 - $ b_month +
$tmpMonth + $m: $m + $tmpMonth - $b_month);
$tmpYear = ($b_month> $m + $tmpMonth? -1: 0);
if ($b_year> $y + $tmpYear)
{
$year = 0; $month = 0;$ day = 0;
}
else
{
$year = $y + $tmpYear - $b_year;
}
return array ($day, $month, $year);
}
$Age = Full_age ("29", "06", "1986");
echo "Вам $age [2] років, $ age[1] місяців і $age [0] днів";
?>
Коли функція повертає кілька значень для їх обробки в програмі, зручно використовувати мовну конструкцію list (), яка дозволяє однією дією присвоїти значення одразу кільком змінним. Наприклад, у попередньому прикладі, залишивши без зміни функцію, обробити повернене значення можна так:
<?
// Виклик функції Full_age ()
list ($ay, $ month, $ year) = Full_age ("07","08", "1974");
echo "Вам $year років, $month місяців і $day днів ";
?>
Взагалі конструкцію list () можна використовувати для присвоєння змінним значень елементів будь-якого масиву.
Приклад 28. Використання list ()
<?
$Arr = array ("first", "second");
list ($ a, $ b) = $Arr;
// Змінній $a присвоюється перше
// Значення масиву, $b - друге
echo $a, "", $b;
// Виведе рядок «first second»
?>
