Что такое функция? Очень приближенно, это некоторый кусок кода, который имеет имя и который возвращает некоторое значение (результат). Раз он имеет имя, то мы его можем использовать многократно - просто вызывая по имени. То, что функция возвращает результат, тоже чаще всего используется. Функции делятся на те, которые вы сами написали, и на встроенные функции PHP. Встроенных функций очень много, и в реальности вы будете использовать небольшое их количество. Такие функции вместе с примерами употребления мы постепенно рассмотрим на наших уроках. Сайчас же мы обсудим пользовательские функции.
Итак, давайте в качестве примера сами напишем функцию, которая просто подсчитает произведение всех чисел от 1 до n (так называемый факториал, обозначается n!). Число n передастся в нашу функцию в качестве параметра. Вот текст:
Указанный фрагмент выведет в окно браузера 120 (=1*2*3*4*5). Как вы видите, объявление функции начинается с слова function, за которым следуют параметры в круглых скобках. Если параметров несколько, то они разделяются запятыми. Если параметров нет, то круглые скобки все равно обязательно надо ставить (писать в них в этом случае, естественно, ничего не надо). Возвращаемое функцией значение пишется после слова return. На слове return происходит выход из тела функции и следующие далее операторы не выполняются.
Функция может вызывать внутри себя другие функции. В частности, функция может вызывать сама себя (это так называемые рекурентные функции). Вот как можно переписать нашу функцию для нахождения факториала, так, чтобы она использовала сама себя:
Как вы видите, здесь функция fact2 вызывает внутри саму себя. Используем мы тот факт, что n!=n*(n-1)!.
Функция может не возвращать никакого значения (это аналог процедур в некоторых языках программирования). Вот пример такой функции:
function f(){
echo "Вызов функции f";
}
Вызывается такая функция обычным образом:
...
f();
...
В таких не возвращающих значения функциях тоже можно писать return для выходя из функции. В таких случаях после return ставить возвращаемое значение смысла нет.
PHP. Урок 13. Функции с переменным числом параметров
Про некоторые функции заранее трудно сказать, сколько параметров у нее будет. Например, функция может подсчитывать сумму некоторого количества чисел, причем сколько чисел передается в такую функцию для суммирования - заранее неизвестно. Вот сейчас мы и посмотрим, что в таких случаях можно сделать. Давайте в качестве примера и напишем функцию для подсчета суммы своих параметров. Вот ее текст:
<?php
function f(){
$sum=0;
for($i=0; $i<func_num_args();$i++){
$sum+=func_get_arg($i);
}
return $sum;
}
//Использование функции
echo f(2, 3, 1, 5);
?>
Этот фрагмент выдаст, разумеется, 11. Что мы в нашей функции используем? Во-первых, мы используем встроенную функцию PHP func_num_args(). Она возвращает количество переданных в функцию параметров. Во-вторых, мы используем встроенную функцию func_get_arg(...). Она возвращает значение параметра функции с номером, который передается в func_get_arg(...) в качестве аргумента. Так, func_get_arg(0) возвратит первый параметр, а func_get_arg(1) - второй. Наряду с этими двумя функциями существует еще функция func_get_args(), возвращающая список всех параметров.