Всем привет! Сегодня мы с вами рассмотрим какие расширенные возможности предлагает нам php для работы с аргументами функции.
Допустим у нас есть следующий код:
function sum($a,$b){
echo $a+$b;
}
sum(10,23);
Здесь у нас просто выводится сумма двух чисел 10, 23 и используется два аргумента.
Теперь попробуем вызвать функцию sum() с одним аргументом:
function sum($a,$b){
echo $a+$b;
}
sum(10);
В результате у нас произойдет ошибка. Так как в функции указаны два обязательных аргумента, а мы при вызове передаем только один.
Мы можем просто вызвать функцию с нулевым вторым аргументом и все будет работать:
sum(10, 0);
Но есть решение и получше. Можно установить значение аргумента по умолчанию в самой функции, пример:
function sum($a,$b=0){
echo $a+$b;
}
sum(10);
Теперь если мы вызовем функцию sum() передав ей всего один аргумент у нас в качестве значения второго аргумента по умолчанию будет 0. Это мы определили в самой функции просто написав $b=0 в качестве второго аргумента функции. Мы можем для аргумента устанавливать любое значение по умолчанию. Только важно помнить что значение по умолчанию используется в качестве значения аргумента только в том случае, когда при вызове функции этот аргумент не передается. Пример:
function sum($a,$b=0){
echo $a+$b;
}
sum(10,20);
В результате выполнения функции мы получаем 30. Два аргумента складываются, значение по умолчанию не срабатывает так как мы передали все аргументы в функцию.
В php есть очень интересная функция func_get_args(). Она вызывается в контексте самой функции и возвращает массив аргументов которые были переданы в текущую функцию. Причем сами аргументы в функции уже можно не указывать.
Давайте немного умодифицируем нашу функцию sum():
function sum(){
$arg = func_get_args();
$sum = 0;
foreach($arg as $key => $value){
$sum += $value;
}
echo $sum;
}
sum(100,20,30,60);
Здесь с помощью функции func_get_args() в функцию sum() мы можем передавать сколько угодно аргументов или вообще их не передавать. И у нас на выходе функция sum() будет считать общую сумму всех передаваемых аргументов.
На этом данная статья подошла к концу.
Я желаю вам успехов и удачи! Пока!