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

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

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

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

 $color = 'красный'; // Вызываем функцию и передаем ей два аргумента my_car('BMW', $color); // Аргументы - строковой литерал и переменная ?>

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

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

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

 $color = 'красный'; foo($color); // Аргумент - значение переменной $color echo "
$color цвет"; // Значение переменной не изменилось ?>

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

 $color = 'красный'; foo($color); echo $color; // выведет: синий ?>

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

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

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

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

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

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

Читайте также:  Вернуть переменная функция php

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

 $x = sqr(4); echo "$x 
"; // => 16. function foo($num) < if($num === 10) return "$num равно 10"; else return "$num не равно 10"; echo 'hello'; // эта строка кода никогда не выполнится >echo foo(6); ?>

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

Источник

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

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

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

Пример #1 Передача массива в функцию

function takes_array ( $input )
echo » $input [ 0 ] + $input [ 1 ] = » , $input [ 0 ]+ $input [ 1 ];
>
?>

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

Пример #2 Function Argument List with trailing Comma

function takes_many_args (
$first_arg ,
$second_arg ,
$a_very_long_argument_name ,
$arg_with_default = 5 ,
$again = ‘a default string’ , // Эта завершающая запятая допустима только начиная с 8.0.0.
)
// .
>
?>

Начиная с PHP 8.0.0, передача обязательных аргументов после необязательных аргументов устарела. Обычно это можно решить, отказавшись от значения по умолчанию. Единственным исключением из этого правила являются аргументы формы Type $param = null , где null по умолчанию делает тип неявно допускающим значение null. Это использование остается разрешенным, хотя вместо этого рекомендуется использовать явный тип, допускающий значение null.

Пример #3 Передача необязательных аргументов после обязательных аргументов

function foo ( $a = [], $b ) <> // Раньше
function foo ( $a , $b ) <> // Теперь

function bar ( A $a = null , $b ) <> // Все еще разрешено
function bar (? A $a , $b ) <> // Рекомендуется
?>

Читайте также:  Creating classes at runtime java

Передача аргументов по ссылке

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

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

Пример #4 Передача аргументов по ссылке

function add_some_extra (& $string )
$string .= ‘и кое-что еще.’ ;
>
$str = ‘Это строка, ‘ ;
add_some_extra ( $str );
echo $str ; // выведет ‘Это строка, и кое-что еще.’
?>

Ошибка передачи значения в качестве аргумента, которое должно передаваться по ссылке.

Значения аргументов по умолчанию

Функция может определять значения по умолчанию в стиле C++ для скалярных аргументов, например:

Пример #5 Использование значений по умолчанию в определении функции

function makecoffee ( $type = «капучино» )
return «Готовим чашку $type .\n» ;
>
echo makecoffee ();
echo makecoffee ( null );
echo makecoffee ( «эспрессо» );
?>

Результат выполнения данного примера:

Готовим чашку капучино. Готовим чашку . Готовим чашку эспрессо.

PHP также позволяет использовать массивы ( array ) и специальный тип null в качестве значений по умолчанию, например:

Пример #6 Использование нескалярных типов в качестве значений по умолчанию

function makecoffee ( $types = array( «капучино» ), $coffeeMaker = NULL )
$device = is_null ( $coffeeMaker ) ? «вручную» : $coffeeMaker ;
return «Готовлю чашку » . join ( «, » , $types ). » $device .\n» ;
>
echo makecoffee ();
echo makecoffee (array( «капучино» , «лавацца» ), «в чайнике» );
?>

Значение по умолчанию должно быть константным выражением, а не (к примеру) переменной или вызовом функции/метода класса.

Обратите внимание, что все аргументы, для которых установлены значения по умолчанию, должны находиться правее аргументов, для которых значения по умолчанию не заданы, в противном случае ваш код может работать не так, как вы этого ожидаете. Рассмотрим следующий пример:

Пример #7 Некорректное использование значений по умолчанию

function makeyogurt ( $type = «ацидофил» , $flavour )
return «Готовим чашку из бактерий $type со вкусом $flavour .\n» ;
>

echo makeyogurt ( «малины» ); // Не будет работать так, как мы могли бы ожидать
?>

Результат выполнения данного примера:

Warning: Missing argument 2 in call to makeyogurt() in /usr/local/etc/httpd/htdocs/phptest/functest.html on line 41 Готовим чашку из бактерий малины со вкусом .

Теперь сравним его со следующим примером:

Пример #8 Корректное использование значений по умолчанию

function makeyogurt ( $flavour , $type = «ацидофил» )
return «Готовим чашку из бактерий $type со вкусом $flavour .\n» ;
>

Читайте также:  Редактор кода html sublime text 3

echo makeyogurt ( «малины» ); // отрабатывает правильно
?>

Результат выполнения данного примера:

Готовим чашку из бактерий ацидофил со вкусом малины.

Замечание: Значения по умолчанию могут быть переданы по ссылке.

Списки аргументов переменной длины

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

Замечание: Также можно добиться аргументов переменной длины, используя функции func_num_args() , func_get_arg() и func_get_args() . Этот метод не рекомендуется, поскольку он использовался до введения. токена . .

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

Пример #9 Использование . для доступа к аргументам

function sum (. $numbers ) $acc = 0 ;
foreach ( $numbers as $n ) $acc += $n ;
>
return $acc ;
>

Результат выполнения данного примера:

Многоточие ( . ) можно использовать при вызове функции, чтобы распаковать массив ( array ) или Traversable переменную в список аргументов:

Пример #10 Использование . для передачи аргументов

Результат выполнения данного примера:

Можно задать несколько аргументов в привычном виде, а затем добавить . . В этом случае . поместит в массив только те аргументы, которые не нашли соответствия указанным в объявлении функции.

Также можно добавить объявление типов перед . . В этом случае PHP будет следить, чтобы все аргументы обработанные многоточием ( . ) были того же типа, что указан в подсказке.

Пример #11 Аргументы с подсказкой типов

function total_intervals ( $unit , DateInterval . $intervals ) $time = 0 ;
foreach ( $intervals as $interval ) $time += $interval -> $unit ;
>
return $time ;
>

$a = new DateInterval ( ‘P1D’ );
$b = new DateInterval ( ‘P2D’ );
echo total_intervals ( ‘d’ , $a , $b ). ‘ days’ ;

// Это не сработает, т.к. null не является объектом DateInterval.
echo total_intervals ( ‘d’ , null );
?>

Результат выполнения данного примера:

3 days Catchable fatal error: Argument 2 passed to total_intervals() must be an instance of DateInterval, null given, called in - on line 14 and defined in - on line 2

В конце концов, можно передавать аргументы по ссылке. Для этого перед . нужно поставить амперсанд ( & ).

Предыдущие версии PHP

Для указания того, что функция принимает переменное число аргументов, никакой специальный синтаксис не используется. Для доступа к аргументам необходимо использовать функции func_num_args() , func_get_arg() и func_get_args() .

В первом примере выше было показано, как задать список аргументов переменной длины для предыдущих версий PHP:

Пример #12 Доступ к аргументам в предыдущих версиях PHP

function sum () $acc = 0 ;
foreach ( func_get_args () as $n ) $acc += $n ;
>
return $acc ;
>

Результат выполнения данного примера:

Источник

Оцените статью