2012-10-16 5 views
0

Я новичок в php и имею опыт кодирования в java и C. Поэтому дополнительный параметр немного запутан для меня. Я хотел бы знать, что если функция имеет два необязательных параметра, и если я передаю один аргумент, какой параметр будет сопоставлен с аргументом?Дополнительные параметры в php

ответ

1

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

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

function f($a = 1, $b, $c, $d = 2) 
{ 
    var_dump($a, $b, $c, $d); 
} 
f('x'); 

Внутри функции $a будет «х», $b и $cбудет нулевым и $d будет 2 но предупреждение будет сгенерировано.

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

5

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

Например:

function foo($a = 1, $b = 2) {} 

foo();  // $a = 1, $b = 2 
foo(3);  // $a = 3, $b = 2 
foo(4, 5); // $a = 4, $b = 5 

Обратите внимание, что нет никакого способа, чтобы установить значение для $b в то же время оставляя значение по умолчанию для $a, в связи с порядком параметров. Вы бы назвать foo(), как это осуществить, что:

foo(1, 6); 
0

Например

function test($test = null, $test_2 = null, $test_3 = null) { 

} 

test(1) => $test=1; 
test(1,1) => $test=1;$test_2=1; 
test(1,1,1) => $test=1;$test_2=1;$test_3=1; 
Смежные вопросы