2 Аргументи функцій
У кожної функції може бути, як ми вже говорили, список аргументів. За допомогою цих аргументів у функцію передається різна інформація (наприклад, значення числа, факторіал якого треба підрахувати). Кожен аргумент являє собою змінну або константу.
За допомогою аргументів дані у функцію можна передавати трьома різними способами.
передача аргументів за значенням (використовується по замовчуванню),
по посиланню
завдання значення аргументів за замовчуванням.
Розглянемо ці способи докладніше.
Коли аргумент передається у функцію за значенням, зміна значення аргументу усередині функції не впливає на його значення поза функцією. Щоб дозволити функції змінювати її аргументи, їх потрібно передавати по посиланню. Для цього у визначенні функції перед ім'ям аргументу варто написати знак амперсанд "&".
<?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>";
// це виведе вже відзначену радіо кнопку
?>
Приклад 5.3. Передача аргументів по посиланню
У функції можна визначати значення аргументів, використовувані за замовчуванням. Саме значення за замовчуванням повинне бути константним вираженням, а не зміним й не представником класу або викликом іншої функції.
У нас є функція, що створює інформаційне повідомлення, підпис до якого міняється залежно від значення переданого їй параметра. Якщо значення параметра не задано, то використовується підпис "Оргкомітет.".
<?php
function Message($sign="Оргкомітет."){
// тут параметр sign має за замовчуванням значення "Оргкомітет"
echo "Наступні збори відбудуться завтра.<br>";
echo $sign . "<br>";
}
Message();
// викликаємо функцію без параметра. У цьому випадку підпис - це Оргкомітет
Message("З повагою, Вася.");
// У цьому випадку підпис буде "З повагою, Вася."
?>
Приклад 5.4. Значення аргументів за замовчуванням
Результатом роботи цього скрипта буде:
Наступні збори відбудуться завтра.
Оргкомітет.
Наступні збори відбудуться завтра.
З повагою, Вася.
Якщо у функції кілька параметрів, то ті аргументи, для яких задаються значення за замовчанням, повинні бути записані після всіх інших аргументів у визначенні функції. У противному випадку з'явиться помилка, якщо ці аргументи будуть опущені при виклику функції.
Наприклад, ми хочемо внести опис статті в каталог. Користувач повинен увести такі характеристики статті, як її назва, автор і короткий опис. Якщо користувач не вводить ім'я автора статті, вважатимемо, що це Іванов Іван.
<?php
function Add_article($title, $description, $author="Іванов Іван"){
echo "Заносимо в каталог статтю: $title,";
echo "автор $author";
echo "<br>Короткий опис: ";
echo "$description <br>";
}
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
