Определения и вызовы функций
function MyFunction()
{
// операторы
}
Если функция принимает аргументы, то они записываются как переменные в объявлении функции. Аргумент функции представляет собой переменную, передаваемую в тело функции для дальнейшего использования в операциях. В случае, когда функция принимает больше одного аргумента, эти переменные разделяются запятыми:
function MyFunction($var, $var1, $var2)
Если функция возвращает какое-либо значение, в теле функции обязательно должен присутствовать оператор return:
function MyFunction()
{
return $ret; // возвращается значение переменной $ret
}
Пример простой функции.
<?
function get_sum()
{
$var = 5;
$var1 = 10;
$sum = $var + $var1;
return $sum;
}
echo(get_sum()); // выводит 15
?>
В этом примере показана функция, вычисляющая сумму двух чисел. Эта функция не принимает ни одного аргумента, а просто вычисляет сумму и возвращает полученный результат. После этого, она вызывается в теле оператора echo для вывода результата в браузер. Модифицируем эту функцию так, чтобы она не возвращала полученный результат, а выводила его в браузер. Для этого достаточно внести оператор echo в тело функции:
<?
function get_sum()
{
$var = 5;
$var1 = 10;
$sum = $var + $var1;
echo $sum;
}
get_sum();
?>
Переменные $var и $var1 мы можем объявить как аргументы и в этом случае в теле функции их определять не надо:
<?
function get_sum($var, $var1)
{
$sum = $var + $var1;
echo $sum;
}
get_sum(5,2); // выводит 7
?>
Переменная, содержащая значение, переданное через аргумент, называется параметром функции.
В рассмотренных примерах аргументы функции передаются по значению, т. е. значения параметров изменяется только внутри функции, и эти изменения не влияют на значения переменных за пределами функции:
<?
function get_sum($var) // аргумент передается по значению
{
$var = $var + 5;
return $var;
}
$new_var = 20;
echo(get_sum($new_var)); // выводит 25
echo("<br>$new_var"); // выводит 20
?>
Для того чтобы переменные переданные функции сохраняли свое значение при выходе из нее, применяется передача параметров по ссылке. Для этого перед именем переменной необходимо поместить амперсанд (&):
function get_sum($var, $var1, &$var2)
В этом случае переменные $var и $var1 будут переданы по значению, а переменная $var2 - по ссылке. В случае, если аргумент передается по ссылке, при любом изменении значения параметра происходит изменение переменной-аргумента:
<?
function get_sum(&$var) // аргумент передается по ссылке
{
$var = $var + 5;
return$var;
}
$new_var = 20;
echo(get_sum($new_var)); // выводит 25
echo("<br>$new_var"); // выводит 25
?>