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