Функции в PHP
В PHP существует две основные формы функций: встроенные и пользовательские.
Для определения пользовательской функции используется ключевое слово function.
Пример 1
<html> <head> <title>Определение и вызов функции</title> </head> <body> <?php function заголовок ($str, $n) { echo "<H$n>$str</H$n>"; } заголовок ("Часть", 1); заголовок ("Глава", 2); заголовок ("Раздел", 3); ?> </body> </html>
Начиная с версии PHP 4.0 можно использовать значения аргументов, подставляемые по умолчанию.
Пример 2
<html> <head> <title>Функция со значением аргумента по умолчанию</title> </head> <body> <?php function заголовок ($str, $n = 2) { echo "<H$n>$str</H$n>"; } заголовок ("Часть", 1); заголовок ("Глава"); заголовок ("Раздел", 3); ?> </body> </html>
Примечание: Указанный ниже код будет отрабатывать не так, как Вы возможно ожидаете. Переменная $full во всех случаях будет true.
fun($ar, false); function fun($row, $full = true){ ... }
Передача аргумента по ссылке
Аргументы можно передавать по ссылке. Тогда все изменения, сделанные с аргументом в теле функции, отразятся на самой переменной.
Пример 3
<html> <head> <title>Передача аргумента по ссылке</title> </head> <body> <?php function add ( &$a, $b ) { $a += $b; $b += $b; } $af = 10; $bf = 6; echo "af = $af; bf = $bf"; add ( $af, $bf ); echo "<br>После вызова функции:<br>"; echo "af = $af; bf = $bf"; ?> </body> </html>
Возврат значений
Для возврата значений из функции используется оператор return. Можно вернуть несколько значений, если применить список list().
Пример 4
<html> <head> <title>Функция, возвращающая список значений</title> </head> <body> <?php function ФИО() { return array ("Иванов", "Иван", "Иванович"); } list ($фамилия, $имя, $отчество) = ФИО(); echo "<table>"; echo "<tr><td>фамилия: <td>$фамилия"; echo "<tr><td>имя: <td>$имя"; echo "<tr><td>отчество: <td>$отчество</table>"; ?> </body> </html>
Динамические функции
В PHP можно использовать динамические функции. Это означает, что если некоторой переменной присвоено имя функции, то с этой переменной можно обращаться точно так же, как с самой функцией.
Пример 5
<html> <head> <title>Переменные функции</title> </head> <body> <?php function funct1 () { echo "Мы внутри функции funct1( );<br>"; } function funct2 () { echo "Мы внутри функции funct2( );<br>"; } $myfunct = "funct1"; $myfunct(); $myfunct = "funct2"; $myfunct(); ?> </body> </html>
Глобальные переменные
Чтобы переменная, созданная вне функции, была доступна внутри функции, надо объявить ее глобальной с помощью инструкции global.
Пример 6
<html> <head> <title>Доступ к глобальной переменной</title> </head> <body> <?php $gg = 45; function funct () { global $gg; echo "Глобальная переменная имеет значение - $gg"; } funct (); ?> </body> </html>
Статические переменные
Чтобы переменная сохраняла свое значение между вызовами функции, нужно объявить ее статической с помощью инструкции static.
Пример 7
<html> <head> <title>Сохранение значения переменной между вызовами функции</title> </head> <body> <?php function funct (&str) { static $ss = 0; $ss++; echo "<h2>$ss. $str</h2>"; } funct ("Понедельник"); echo "Король гулял в парке"; funct ("Вторник"); echo "Король охотился"; ?> </body> </html>
Была создана и проинициализирована переменная $ss. По отношению к функции funct( ) эта переменная останется локальной. При втором и последующих вызовах функции funct( ) инициализация игнорируется, а запоминается последнее присвоенное значение.