Я определил функцию f
в PHP:
function f($r, $o1="1", $o2="2") { echo($r . $o1 . $o2 . "\n"); }
Теперь я могу позвонить f
(1) без дополнительных параметров, (2) с первым или (3) с обоими дополнительными параметрами:
f(0); // 012
f(0, "a"); // 0a2
f(0, "a", "b"); // 0ab
Можно ли также позвонить f
только со вторым параметром? например
f(0, $o2="X"); // 01X
я использую 5.5.12-2ubuntu4.1
,
Вы можете определить свою функцию следующим образом:
function f($r, $o1=null, $o2=null) {
if(is_null($o1)) $o1 = "1";
if(is_null($o2)) $o1 = "2";
echo($r . $o1 . $o2 . "\n");
}
Теперь вы знаете, что вы всегда можете передать значение null, чтобы использовать значение по умолчанию, и позже вы можете изменить значения по умолчанию, не меняя вызывающих абонентов.
Вы можете сделать все параметры необязательными:
function f($r = null, $o1 = "1", $o2 = "2")
{
$r = $r ? : 0;
echo($r . $o1 . $o2 . "\n");
}
Это дает вам:
f(0); // 012
f(null, "a"); // 0a2
f(1, "a"); // 1a2
Начиная с PHP 5.6, вы можете использовать «…» перед параметром, чтобы сообщить интерпретатору, что ваша функция принимает случайное число для аргументов.
До PHP 5.6 вы можете передавать массив вместо списка параметров.
Вы также можете использовать func-get-arg () или func-get-args () и проверить, является ли второй параметр «отключенным» (то есть: == null)