PHP: Параметры и аргументы функции

Аргументы и параметры

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

Что такое параметры мы рассмотрели, теперь узнаем о том, какими значениями они инициализируются. Значения, которые будут присвоены параметрам называются аргументами - это может быть например строковой или целочисленный литерал, переменная или какое-нибудь более сложное выражение состоящее из переменных и операторов, но которое может быть вычислено интерпретатором PHP для получения значения, которым будет инициализирован параметр. Проще говоря, аргумент - это переданное функции значение:

<?php

  // Определение функции
  function my_car($car, $color) {  // Указано два параметра: $car и $color
    echo "Марка моей машины: $car и она имеет $color цвет";
  }
 
  $color = 'красный';
 
  // Вызываем функцию и передаем ей два аргумента
  my_car('BMW', $color);  // Аргументы - строковой литерал и переменная

?>

Передача аргументов

PHP поддерживает два способа передачи аргументов функции. Первый - передача аргументов по значению (работает по умолчанию), второй - передача аргументов по ссылке. Также PHP поддерживает значения по умолчанию. Давайте теперь рассмотрим все три варианта подробнее.

По умолчанию аргументы передаются в функцию по значению (это значит, если вы измените значение параметра внутри функции, то вне ее переданное значение останется прежним):

<?php

  function foo($color) {
    $color = 'синий';    // изменили значение параметра
    echo "Внутри функции параметр \$color имеет значение: $color";
  }
 
  $color = 'красный';
 
  foo($color);                 // Аргумент - значение переменной $color
  
  echo "<br>$color цвет";    // Значение переменной не изменилось

?>

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

<?php

  function foo(&$my_color) {  // теперь параметр будет ссылаться на оригинальное значение
    $my_color = 'синий';      // присваиваем новое значение
  }
  
  $color = 'красный';
  
  foo($color);
  
  echo $color;    // выведет: синий

?>

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

<?php

  function tea($str = 'зеленый') {
    return "В чашке $str чай<br>\n";
  }

  echo tea();         // выведет значение по умолчанию
  echo tea('черный');

?>
Примечание: все параметры, для которых установлены значения аргументов по умолчанию, должны находиться правее аргументов, для которых значения по умолчанию не заданы, так как в противном случае ваш код может работать не так, как вы того ожидали:
<?php

  // данный пример вызовет ошибку
  function my_car($car = 'Mazda', $color) {
    echo "Марка моей машины: $car и она имеет $color цвет";
  }
 
  my_car('красный');  // Не будет работать так, как мы могли бы ожидать
  
  
  // корректный пример
  function my_car($color, $car = 'Mazda') {
    echo "Марка моей машины: $car и она имеет $color цвет";
  }
 
  my_car('красный');

?>

Значение, возвращаемое функцией

Когда выполнение функции завершается, она может возвратить некоторое значение (результат работы функции) программе, которая ее вызвала. Оператор return внутри функций служит для определения значения, возвращаемого функцией. В качестве возвращаемого значения может быть любой тип. Он имеет следующий синтаксис:

return выражение;

Оператор return может быть расположен в любом месте функции. Когда до него доходит управление, функция возвращает значение (если указано) и завершает свое выполнение. Если оператор return не указан или не указано возвращаемое значение, то функция вернет значение NULL. Для использования возвращаемого значения, результат выполнения функции можно присвоить к примеру переменной:

<?php

  function sqr($num) {
    return $num * $num;
  }

  $x = sqr(4);

  echo "$x <br>";   // => 16.
  

  function foo($num) {
    if($num === 10)
      return "$num равно 10";
    else
      return "$num не равно 10";
	  
	echo 'hello';  // эта строка кода никогда не выполнится
  }
  
  echo foo(6);

?>
    
Копирование материалов с данного сайта возможно только с разрешения администрации сайта
и при указании прямой активной ссылки на источник.
2011-2016 © puzzleweb.ru

Реклама на сайте | Обратная связь