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