В предыдущих главах вы, вероятно, уже обратили внимание на используемые функции. Функции Date и print - это обычные общедоступные встроенные функции. Язык PHP предоставляет возможность объявления своих собственных функций.
Функции расширяют идею повторяющегося программного блока и позволяют произвольно выполнять программные блоки в любом месте сценария. Программный блок объявляется как функция, после чего у вас есть возможность вызывать функцию сколько угодно раз. При вызове функции ей можно передавать любое количество аргументов, а сама функция после отработки возвращает определенное значение.
4.1. Объявление функции
Объявление функции начинается с оператора function, за ним следует имя функции. Внутри скобок указывается список аргументов, разделенных запятыми. При этом аргументы можно не задавать. На рис. 4.1 показан формат объявления функции.
В других языках программирования, включая и более старые версии PHP, объявление функции должно предшествовать любому ее вызову. Однако в PHP 4 объявление функции можно разместить и после вызова данной функции. При вызове функции необходимо задать ее имя с последующими кавычками, даже если никаких аргументов передавать не надо.
Функции
 Функции позволяют разместить программный код, который будет повторяться в создаваемой программе несколько раз. Это может быть вызвано нежеланием повторять один и тот же программный код в сценарии несколько раз или намерением сделать код более понятным и удобочитаемым. Обратимся к листингу 4.1. В нем сделано объявление функции printBold, которая печатает любой переданный ей текст жирным шрифтом. 
I Листинг 4.1. Простейшая функция_
<?php
function printBold($text) {
print("<b>$text</b>");
}
print("3ia строка не печатается жирным шрифтом <br>n"); printBold("Эта строка печатается жирным шрифтом"); print("<br>n");
print("Этa строка не печатается жирным шрифтом <br>n");
?>

4.2. Оператор return
В определенном месте функция завершается, передавая управление оператору, вызвавшему ее. Это происходит, например, когда выполнение доходит до окончания блока функции. После этого выполнение вызвавшего кода продолжается с точки после места вызова функции. Другой способ остановки выполнения функции заключается в использовании оператора return.
Функция может содержать сколько угодно операторов return, хотя при этом необходимо принимать во внимание фактор удобочитаемости программного кода. Несколько операторов return может стать препятствием к пониманию выполнения алгоритма, заложенного в функции. В идеале функции должны иметь один вход и один выход. На практике существуют ситуации, при которых наличие нескольких операторов return вполне допустимо.
Если оператор return дополнить выражением, то возвратится значение, вычисляемое этим выражением. В листинге 4.2 продемонстрирована функция, которая принимает строку и возвращает ее обрамленную тегами жирного текста.

| Листинг 4.2. Пример функции с использованием команды return
<?php
function makeBold($text)
{
$text = "<b>$text</b>";
return($text);
}
print(" Эта строка не печатается жирным шрифтом <br>n"); print(makeBold(" Эта строка печатается жирным шрифтом") .
"<br>n");
print(" Эта строка не печатается жирным шрифтом <br>n");
?>

 Для большинства типов данных возвращаемые значения передаются с переменными. Объекты, речь о которых пойдет в главе 6, "Классы и объекты", передаются ссылкой. Для того чтобы функция возвращала ссылку, перед ее именем необходимо указать символ &. В PHP 4 объекты передаются значениями, в которых замешаны некоторые специальные приемы возвращения объектов. В листинге 4.3 показана функция, возвращающая ссылку на массив. При каждом обращении к функции создается массив, в нем запоминается 10 чисел, и возвращается ссылка на этот массив.
Функция getRandArray создает новый массив после каждого вызова. Обычно после возвращения управления вызывающему процессу PHP уничтожает переменные, с которыми работала функция. В данном случае функция возвращает ссылку на массив. После завершения функции действие всех задействованных в ней ссылок аннулируется, и процессор PHP уменьшает на единицу количество ссылок на массив. Однако ссылкой на массив теперь является myNewArray, и массив можно продолжать использовать.

| Листинг 4.3. Функция, возвращающая ссылку
<?php
function &getRandArray()
{
$a = array(); for($i=0; $i<10;
{
$a[] = rand(1,100);
}
return($a);
}
$myNewArray = &getRandArray();
?>