Язык программирования PHP - [22]
Функция вычисления факториала натурального числа
>
>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 такого требования нет. Все дело в том, как интерпретатор обрабатывает получаемый код. Единственное исключение составляют функции, определяемые условно (внутри условных операторов или других функций). Когда функция определяется таким образом, ее определение должно предшествовать ее вызову.
>
>$make = true;
>/* здесь нельзя вызвать Make_event();
>потому что она еще не существует, но можно
>вызвать Save_info() */
>Save_info("Вася","Иванов",
> "Я выбрал курс по PHP");
>if ($make){
>// определение функции Make_event()
> function Make_event(){
Хочу изучать Python> echo "
";
> }
>}
>// теперь можно вызывать Make_event()
>Make_event();
>// определение функции Save_info
>function Save_info($first, $last, $message){
> echo "
$message
";
> echo "Имя: ". $first . " ". $last . "
";
>}
>Save_info("Федя","Федоров",
> "А я выбрал Lisp");
>// Save_info можно вызывать и здесь
>?>
Если функция однажды определена в программе, то переопределить или удалить ее позже нельзя. Несмотря на то, что имена функций нечувствительны к регистру, лучше вызывать функцию по тому же имени, каким она была задана в определении.
>
>/* нельзя сохранить данные, т.е. вызвать
>функцию DataSave() до того, как выполнена
>проверка их правильности, т.е. вызвана
>функция DataCheck() */
>DataCheck();
>DataSave();
>function DataCheck(){
>// проверка правильности данных
> function DataSave(){
> // сохраняем данные
> }
>}
>?>
Рассмотрим подробнее аргументы функций, их назначение и использование.
Аргументы функций
У каждой функции может быть, как мы уже говорили, список аргументов. С помощью этих аргументов в функцию передается различная информация (например, значение числа, факториал которого надо подсчитать). Каждый аргумент представляет собой переменную или константу.
С помощью аргументов данные в функцию можно передавать тремя различными способами. Это передача аргументов по значению (используется по умолчанию), по ссылке и задание значения аргументов по умолчанию. Рассмотрим эти способы подробнее.
Когда аргумент передается в функцию по значению, изменение значения аргумента внутри функции не влияет на его значение вне функции. Чтобы позволить функции изменять ее аргументы, их нужно передавать по ссылке. Для этого в определении функции перед именем аргумента следует написать знак амперсанд «&».
>
>// напишем функцию, которая бы добавляла
>// к строке слово checked
>function add_label(&$data_str){
> $data_str .= "checked";
>}
>$str = "
> // пусть имеется такая строка
>echo $str .">
";
> // выведет элемент формы –
> // не отмеченную радио кнопку
>add_label($str);
> // вызовем функцию
![Половая идентификация ребенка в кинетическом рисунке семьи](/storage/book-covers/ac/ac5b2cf435e320c2b679b133d70201eb0101d253.jpg)
Здоровые семейные отношения – это залог успешной полоролевой идентификации ребёнка. Начинаясь с рождения, процесс идентификации протекает непрерывно, с заострениями и актуализациями переживаний на кризисных этапах психосексуального развития. Одним из таких этапов является возраст эдипова комплекса. Конфликты и искажения воспитательного процесса на этом этапе никогда не проходят бесследно и могут с новой силой реанимироваться уже в подростковом возрасте. В пособии представлены основные критерии анализа и подходы к пониманию проблем половой идентификации ребёнка с помощью популярной рисуночной методики.
![Искусство Древней Греции и Рима: учебно-методическое пособие](/storage/book-covers/4c/4c3785b8496557e93de940ff04a8fc6d39db6429.jpg)
Предлагаемое методическое пособие рассчитано на студентов 1 курса всех форм обучения: очной (дневной, вечерней), при которой студенты слушают полный курс лекций по всем заявленным в пособии темам, и заочной, при которой студенты слушают краткий курс лекций и занимаются самостоятельной подготовкой к экзаменам и зачетам. Пособие содержит изложенную в краткой форме программу занятий, подробный тематический план-конспект по тридцати двум темам изучаемым в течение семестра, список рекомендованной к курсу лекций литературы, вопросы к экзаменам, темы рефератов, семинарских занятий, а также приблизительные темы дипломных и курсовых работ.
![Самоучитель Adobe After Effects 6.0](/storage/book-covers/84/8493a01f3f2ad533f801532092a350699300772b.jpg)
Обучение созданию профессиональных видеофильмов и обработки их на компьютере представлено в виде 12 уроков. Рассматривается, как с помощью программы Adobe After Effects можно редактировать и рисовать последовательность кадров, добавлять титры и заголовки, применять различные видеоэффекты, редактировать звуковое сопровождение фильма. Описывается процесс настройки прозрачности и наложения слоев видео для последующего экспорта фильма в различных форматах. Показываются способы создания анимации при масштабировании, поворотах и в движении с наложением титров и спецэффектов.
![История русской литературы XX века (20–90–е годы). Основные имена](/storage/book-covers/d8/d860f2d60662468b2d09f1006035d88ecc81bdcf.jpg)
Книга является пособием по истории русской литературы XX века (20-90-е годы). Она представляет собой первый том, за которым последует продолжение — «Литературный процесс» (в двух частях). Пособие призвано отразить современный научный взгляд на основные художественные ценности и тенденции развития русской литературы XX века.Издание предназначено для студентов филологических факультетов российских университетов, а также для аспирантов и преподавателей, — всех, кто занимается русской литературой.
![Материаловедение](/storage/book-covers/f2/f2866472365118a39b7ad9d23b9460f3f375d581.jpg)
Данный конспект лекций предназначен для студентов высших и средних специальных учебных заведений. В него входят сведения о древесине и древесных материалах, описываются их основные свойства. Дается характеристика металлов и сплавов, рассматриваются способы их применения. Приводятся основные сведения о лакокрасочных, смазочных, облицовочных материалах, а также классификация клеев и области их назначения.
![Микроэкономика](/storage/book-covers/29/2910249380ec5db03afe32a486701a77a59eba31.jpg)
В данном конспекте лекций в доступной форме изложены все основные вопросы по дисциплине «микроэкономика».Книга поможет получить основные знания и подготовиться к зачету или экзамену. Рекомендуется студентам экономических специальностей.