Язык программирования PHP | страница 42




Функция вычисления факториала натурального числа


>

>function fact($n){

> if ($n==0) return 1;

> else return $fact = $n * fact($n-1);

>}

>echo fact(3);

> // можно было бы написать echo (3*2);

> // но если число большое,

>echo fact(50);

> // то удобнее пользоваться функцией,

> // чем писать echo (50*49*48*...*3*2);

>?>


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


Посмотрим, как в общем виде выглядит задание (объявление) функции. Функция может быть определена с помощью следующего синтаксиса:


>function Имя_функции (параметр1, параметр2,

> ... параметрN){

> Блок_действий

> return "значение возвращаемое функцией";

>}


Если прямо так написать в php-программе, то работать ничего не будет. Во-первых, Имя_функции и имена параметров функции (параметр1, параметр2 и т.д.) должны соответствовать правилам наименования в PHP (и русских символов в них лучше не использовать). Имена функций нечувствительны к регистру. Во-вторых, параметры функции – это переменные языка, поэтому перед названием каждого из них должен стоять знак $. Никаких троеточий ставить в списке параметров нельзя. В-третьих, вместо слов блок_действий в теле функции должен находиться любой правильный PHP-код (не обязательно зависящий от параметров). И наконец, после ключевого слова return должно идти корректное php-выражение (что-либо, что имеет значение). Кроме того, у функции может и не быть параметров, как и возвращаемого значения. Пример правильного объявления функции – функция вычисления факториала, приведенная выше.


Как происходит вызов функции? Указывается имя функции и в круглых скобках список значений ее параметров, если таковые имеются:


>

>Имя_функции ("значение_для_параметра1",

> "значение_для_параметра2",...);

>// пример вызова функции – вызов функции

>// вычисления факториала приведен выше,

>// там для вычисления факториала числа 3

>// мы писали: fact(3);

>// где fact – имя вызываемой функции,

>// а 3 – значение ее параметра с именем $n

>?>


Когда можно вызывать функцию? Казалось бы, странный вопрос. Функцию можно вызвать после ее определения, т.е. в любой строке программы ниже блока function f_name(){...}. В PHP3 это было действительно так. Но уже в PHP4 такого требования нет. Все дело в том, как интерпретатор обрабатывает получаемый код. Единственное исключение составляют функции, определяемые условно (внутри условных операторов или других функций). Когда функция определяется таким образом, ее определение должно предшествовать ее вызову.