Аргументи функцій

 

У кожній функції може бути список аргументів. За допомогою цих аргументів у функцію передається різна інформація (наприклад, значення числа, факторіал якого треба підрахувати). Кожен аргумент являє собою змінну або константу.

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

Коли аргумент передається у функцію за значенням, зміна значення аргументу всередині функції не впливає на його значення поза функцією. Щоб дозволити функції змінювати аргументи, їх потрібно передавати по посиланню. Для цього у визначенні функції перед ім'ям аргументу слід написати знак амперсанд «&».

Приклад. Передача аргументів за посиланням

<? Php 
// Напишемо функцію, яка б додавала 
// До рядка слово checked 
function add_label (& $data_str) { 
$data_str .= "checked"; 

$str = "<input type = radio name = article"; 
// Нехай є такий рядок 
echo $str. "> <br>"; 
// Виведе елемент форми - 
// Не вибрану радіо кнопку 
add_label ($str); 
// Викличемо функцію 
echo $ str. "> <br>"; 
// Це виведе вже вибрану 
// Радіо кнопку 
?>

У функції можна визначати значення аргументів, які використовуються за замовчуванням. Значення за замовчанням має бути константним виразом, а не змінною і не представником класу або викликом іншої функції.

У нас є функція, яка створює інформаційне повідомлення, підпис до якого змінюється в залежності від значення переданого їй параметра. Якщо значення параметра не задано, то використовується підпис "Оргкомітет".

Приклад. Значення аргументів за замовчуванням

<? Php 
function Message ($ sign = "Оргкомітет.") { 
// Тут параметр sign має за замовчуванням значення "Оргкомітет" 
echo "Наступне зібрання відбудеться завтра. <br>"; 
echo $sign. "<br>"; 

Message (); 
// Викликаємо функцію без параметра. 
// У цьому випадку підпис - це Оргкомітет 
Message ("З повагою, Вася"); 
// У цьому випадку підпис 
// Буде "З повагою, Вася." 
?> 
 

Результатом роботи цього скрипта буде:
Наступне зібрання відбудеться завтра. 
Oргкомітет. 
Наступне зібрання відбудеться завтра. 
З повагою, Вася.

Якщо у функції декілька параметрів, то ті аргументи, для яких задаються значення за замовчуванням, повинні бути записані після всіх інших аргументів у визначенні функції. В іншому випадку з'явиться помилка, якщо ці аргументи будуть опущені при виклику функції.

Наприклад, ми хочемо внести опис статті в каталог. Користувач повинен ввести такі характеристики статті, як її назва, автор та короткий опис. Якщо користувач не вводить ім'я автора статті, вважаємо, що це Іванов Іван.

<? Php 
function Add_article ($title, $description, 
$author = "Іванов Іван") { 
echo "Заносимо в каталог статтю: $title,"; 
echo "автор $author"; 
echo "<br> Короткий опис:"; 
echo "$description <hr>"; 

Add_article ("Інформатика і ми", 
"Це стаття про інформатику ...", 
"Петров Петро"); 
Add_article ("Хто такі хакери", 
"Це стаття про хакерів ..."); 
?>

У результаті роботи скрипта одержимо наступне 
Заносимо в каталог статтю: Інформатика і ми, 
автор Петров Петро. 
Короткий опис: 
Це стаття про інформатику ...

Заносимо в каталог статтю: Хто такі хакери, 
автор Іванов Іван. 
Короткий опис: 
Це стаття про хакерів ...

Якщо ж ми напишемо ось так:

<? Php 
function Add_article ($author = "Іванов Іван", 
$title, $description) { 
// ... Дії як у попередньому прикладі 

Add_article ("Хто такі хакери", 
"Це стаття про хакерів ..."); 
?>

То в результаті отримаємо: 
Warning: Missing argument 3 for 
add_article () in 
c: \ users \ nina \ tasks \ func \ def_bad.php 
on line 2