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

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

С помощью аргументов данные в функцию можно передавать тремя различными способами. Это передача аргументов по значению (используется по умолчанию), по ссылке и задание значения аргументов по умолчанию. Рассмотрим эти способы подробнее.

Когда аргумент передается в функцию по значению, изменение значения аргумента внутри функции не влияет на его значение вне функции. Чтобы позволить функции изменять ее аргументы, их нужно передавать по ссылке. Для этого в определении функции перед именем аргумента следует написать знак амперсант «&».

<?php// напишем функцию, которая бы добавляла// к строке слово checkedfunction add_label(&$data_str){ $data_str .= "checked";}$str = "<input type=radio name=article "; // пусть имеется такая строкаecho $str ."><br>"; // выведет элемент формы – // не отмеченную радио кнопкуadd_label($str); // вызовем функциюecho $str ."><br>"; // это выведет уже отмеченную // радио кнопку?>

Пример 5.3. Передача аргументов по ссылке (html, txt)

В функции можно определять значения аргументов, используемые по умолчанию. Само значение по умолчанию должно быть константным выражением, а не переменной и не представителем класса или вызовом другой функции.

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

<?phpfunction Message($sign="Оргкомитет"){// здесь параметр sign имеет по умолчанию// значение "Оргкомитет" echo "Следующее собрание состоится завтра." echo "$sign .<br>";}Message(); // вызываем функцию без параметра. // В этом случае подпись – это ОргкомитетMessage("С уважением, Вася"); // В этом случае подпись // будет "С уважением, Вася"?>

Пример 5.4. Значения аргументов по умолчанию (html, txt)

Результатом работы этого скрипта будет:

Следующее собрание состоится завтра. Оргкомитет.Следующее собрание состоится завтра. С уважением, Вася.

Если у функции несколько параметров, то те аргументы, для которых задаются значения по умолчанию, должны быть записаны после всех остальных аргументов в определении функции. В противном случае появится ошибка, если эти аргументы будут опущены при вызове функции.

Например, мы хотим внести описание статьи в каталог. Пользователь должен ввести такие характеристики статьи, как ее название, автор и краткое описание. Если пользователь не вводит имя автора статьи, считаем, что это Иванов Иван.

<?phpfunction Add_article($title, $description, $author="Иванов Иван"){ echo "Заносим в каталог статью: $title," echo "автор $author"; echo "<br>Краткое описание: " echo "$description <hr>";}Add_article("Информатика и мы", "Это статья про информатику ...", "Петров Петр");Add_article("Кто такие хакеры", "Это статья про хакеров ...");?>

В результате работы скрипта получим следующее

Заносим в каталог статью: Информатика и мы, автор Петров Петр.Краткое описание: Это статья про информатику... Заносим в каталог статью: Кто такие хакеры, автор Иванов Иван.Краткое описание: Это статья про хакеров...

Если же мы напишем вот так:

<?phpfunction Add_article($author="Иванов Иван", $title, $description){// ...действия как в предыдущем примере}Add_article("Кто такие хакеры", "Это статья про хакеров...");?>

То в результате получим:

Warning: Missing argument 3 for add_article() inc:\users\nina\tasks\func\def_bad.php on line 2