Установка необязательного параметра явно при вызове функции PHP

Я определил функцию 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,

0

Решение

Вы можете определить свою функцию следующим образом:

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, чтобы использовать значение по умолчанию, и позже вы можете изменить значения по умолчанию, не меняя вызывающих абонентов.

0

Другие решения

Вы можете сделать все параметры необязательными:

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
0

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

До PHP 5.6 вы можете передавать массив вместо списка параметров.
Вы также можете использовать func-get-arg () или func-get-args () и проверить, является ли второй параметр «отключенным» (то есть: == null)

-1
По вопросам рекламы [email protected]