Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Сайтостроение (уроки по HTML, PHP, mySQL, веб-дизайну)


Информационный Канал Subscribe.Ru

Сайтостроение. Основы PHP. Уроки с сайта http://progs.biz

Рассылка №14

Основы PHP. Урок 12. Функции в PHP.
Основы PHP. Урок 13. Функции с переменным числом параметров.

Полные версии уроков (с картинками) можно найти по адресам
Урок 12. Функции в PHP.
Урок 13. Функции с переменным числом параметров.

PHP. Урок 12. Функции в PHP

Что такое функция? Очень приближенно, это некоторый кусок кода, который имеет имя и который возвращает некоторое значение (результат). Раз он имеет имя, то мы его можем использовать многократно - просто вызывая по имени. То, что функция возвращает результат, тоже чаще всего используется. Функции делятся на те, которые вы сами написали, и на встроенные функции PHP. Встроенных функций очень много, и в реальности вы будете использовать небольшое их количество. Такие функции вместе с примерами употребления мы постепенно рассмотрим на наших уроках. Сайчас же мы обсудим пользовательские функции.

Итак, давайте в качестве примера сами напишем функцию, которая просто подсчитает произведение всех чисел от 1 до n (так называемый факториал, обозначается n!). Число n передастся в нашу функцию в качестве параметра. Вот текст:

<?php
function fact($n){
    $res=1;
    for($i=1;$i<=$n;$i++){
        $res*=$i;
    }
    return $res;
}
//Используем функцию
echo fact(5);
?>

Указанный фрагмент выведет в окно браузера 120 (=1*2*3*4*5). Как вы видите, объявление функции начинается с слова function, за которым следуют параметры в круглых скобках. Если параметров несколько, то они разделяются запятыми. Если параметров нет, то круглые скобки все равно обязательно надо ставить (писать в них в этом случае, естественно, ничего не надо). Возвращаемое функцией значение пишется после слова return. На слове return происходит выход из тела функции и следующие далее операторы не выполняются.

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

function fact2($n){
    if($n!=1){
        return $n*fact2($n-1);
    }
    else{
        return 1;
    }
}

Как вы видите, здесь функция 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(), возвращающая список всех параметров.

Наверх

Copyright Алексеев Игорь, 2002

Copyright сайт progs.biz, 2002



http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное