Лекція № 12
Тема: Передача параметрів функції
План
Передача значень
Передача змінних по посиланню
Передача значень
При оголошенні функції потрібно вказати список параметрів, які можуть передаватися функції, наприклад:
function func ($a, $b, $c) { ... };
При виклику функції func () потрібно обов'язково вказати всі три параметри, оскільки вони є обов'язковими. У РНР функції можуть володіти необов'язковими параметрами або параметрами за умовчанням — про них ми поговоримо трохи пізніше.
Передача змінних по посиланню
Згідно традиції, у всіх мовах програмування є два види аргументів функцій:
параметри-значення;
параметри-змінні.
Функція не може змінити параметр-значення, тобто він доступний функції «тільки для читання» — вона може його використовувати, але не більш. Як параметр-значення необов'язково указувати змінну, можна вказати саме значення, звідси назва — параметр-значення, наприклад:
function func($a)
(
echo "Параметр = $a\n";
}
$b = 3; func(3); func($b);
Дана функція виведе рядок «Параметр = 3» двічі.
На відміну від параметрів-значень, параметри-змінні можуть бути змінені в процесі роботи функції. Тут вже не можна передавати значення, потрібно обов'язково передати змінну.
У всіх мовах програмування способи оголошень параметрів-значень і параметрів-змінних відрізнялися друга від друга. Мова РНР не стала виключенням. У мові РНР, на відміну від С немає покажчиків, тому для оголошення параметрів-змінних використовується механізм передачі змінній по посиланню.
Лістинг. Передача змінній по посиланню
<?
SFirst = $Second = 5;
function f1($f, &Ss)
{
echo "Змінний параметрьАп";
$f = '7; $s = 10;
echo "First = $f, Second * Ss\n";
1
echo "Значення змінних до виклику функции\п";
echo "First = SFirst Second = SSecond\n";
fl($First, $Second);
echo "First = $First Second = $Second\n";
?>

Мал. 8.1. Виведення програми
Спочатку змінні $First і $Second рівні 5. Потім ми в тілі функції змінюємо обидва параметри — звичайний і переданий по посиланню. Як показує мал. 8.1, усередині функції параметри були змінені, а ось в основній програмі відобразилася зміна другої змінної-параметра $s, переданого по посиланню — &.