Добро пожаловать!
Здесь вы можете найти ответ на интересующий вас вопрос в отрасли сайтостроения, познакомится ближе с web технологиями и web стандартами.

PHP и MySQL

Глава 5. Функции.

§ 5.1. Определения и вызовы функций.

Функция объявляется при помощи ключевого слова function, после которого в фигурных скобках записываются различные операторы, составляющие тело функции:

function MyFunction()
{
 // операторы
}

Если функция принимает аргументы, то они записываются как переменные в объявлении функции. Аргумент функции представляет собой переменную, передаваемую в тело функции для дальнейшего использования в операциях. В случае, когда функция принимает больше одного аргумента, эти переменные разделяются запятыми:

function MyFunction($var, $var1, $var2)

Если функция возвращает какое-либо значение, в теле функции обязательно должен присутствовать оператор return:

function MyFunction()
{
  return $var; // возвращается значение переменной $var
}

Пример простой функции:

<?
  function get_sum()
  {
    $var = 5;
    $var1 = 10;
    $sum = $var1 + $var2;
    return $sum;
  }
  echo get_sum(); // выводит 15
?>

В этом примере показана функция, вычисляющая сумму двух чисел. Эта функция не принимает ни одного аргумента, а просто вычисляет сумму и возвращает полученный результат. После этого, она вызывается в теле оператора echo для вывода результата в браузер. Модифицируем эту функцию так, чтобы она не возвращала полученный результат, а выводила его в браузер. Для этого достаточно внести оператор echo в тело функции:

<?
  function get_sum()
  {
    $var1 = 5;
    $var2 = 10;
    $sum = $var1 + $var2;
    echo $sum;
  }
  get_sum();
?>

Переменные $var1 и $var2 мы можем объявить как аргументы и в этом случае в теле функции их определять не надо:

<?
  function get_sum($var1, $var2)
  {
    $sum = $var1 + $var2;
    echo $sum;
  }
  get_sum(5,2); // выводит 7
?>

Переменная, содержащая значение, переданное через аргумент, называется параметром функции.

В рассмотренных примерах аргументы функции передаются по значению, т. е. значения параметров изменяется только внутри функции, и эти изменения не влияют на значения переменных за пределами функции:

<?php
function test$var )    // аргумент передается по значению
{
    echo 
$var."<br>\n";    // выводит 10
    
$var $var 5;
    echo 
$var."<br>\n";    // выводит 15
}
$num 10;
echo 
test$num );
echo 
$num;    // выводит 10
?>

Для того чтобы переменные, переданные функции сохраняли свое значение при выходе из нее, применяется передача параметров по ссылке. Для этого при вызове функции перед именем переменной необходимо поместить амперсанд &:

function test($var1, $var1, $var3)
{
  // тело функции
}
test($var1, $var1, &$var3)

В этом случае переменные $var1 и $var2 будут переданы по значению, а переменная $var3 — по ссылке. В случае, если аргумент передается по ссылке, при любом изменении значения параметра происходит изменение переменной-аргумента:

<?php
function test($var)
{
    echo 
$var."<br>\n";    // выводит 10
    
$var $var 5;
    echo 
$var."<br>\n";    // выводит 15
}
$num 10;
echo 
test(&$num);    // аргумент передается по ссылке
echo $num;           // выводит 15
?>

Чтобы не забывать каждый раз писать & перед переменной, передавая ее функции, существует и другой синтаксис передачи по ссылке. А именно, можно символ & перенести прямо в заголовок функции:

<?php
function test(&$var)    // аргумент передается по ссылке
{
    echo 
$var."<br>\n";     // выводит 10
    
$var $var 5;
    echo 
$var."<br>\n";     // выводит 15
}
$num 10;
echo 
test($num);
echo 
$num;    // выводит 15
?>