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); ?>
С этой темой смотрят: