Большинство из нас знают следующий синтаксис:
function funcName($param='value'){ echo $param; } funcName(); Result: "value"
Нам было интересно, как передать значения по умолчанию для «не последней» параметра? Я знаю, что эта терминология ушла, но простой пример:
function funcName($param1='value1',$param2='value2'){ echo $param1."\n"; echo $param2."\n"; }
Как мы выполняем следующее:
funcName(---default value of param1---,'non default'); Result: value1 not default
Надеюсь, это имеет смысл, мы хотим в основном предположить значения по умолчанию для параметров, которые не являются последними.
Благодарю.
PHP не поддерживает то, что вы пытаетесь сделать. Обычным решением этой проблемы является передача массива аргументов:
function funcName($params = array()) { $defaults = array( // the defaults will be overidden if set in $params 'value1' => '1', 'value2' => '2', ); $params = array_merge($defaults, $params); echo $params['value1'] . ', ' . $params['value2']; }
Пример использования:
funcName(array('value1' => 'one')); // outputs: one, 2 funcName(array('value2' => 'two')); // outputs: 1, two funcName(array('value1' => '1st', 'value2' => '2nd')); // outputs: 1st, 2nd funcName(); // outputs: 1, 2
Используя это, все аргументы являются необязательными. Передавая массив аргументов, все, что находится в массиве, переопределит значения по умолчанию. Это возможно благодаря использованию array_merge()
который объединяет два массива, переопределяя первый массив с любыми повторяющимися элементами во втором массиве.
К сожалению, это невозможно. Чтобы обойти это, я бы предложил добавить следующую строку к вашей функции:
$param1 = (is_null ($param1) ? 'value1' : $param1);
Затем вы можете вызвать его так:
funcName (null, 'non default'); Result: value1 non default
Простое решение вашей проблемы, вместо использования:
funcName(---default value of param1---,'non default');
Используйте следующий синтаксис:
funcName('non default',---default value of param1---);
Пример:
function setHeight2($maxheight,$minheight = 50) { echo "The MAX height is : $maxheight <br>"; echo "The MIN height is : $minheight <br>"; } setHeight2(350,250); setHeight2(350); // will use the default value of 50