PHP默认函数参数值,如何为'非最后'参数'传递默认值'?

我们大多数人都知道以下语法:

function funcName($param='value'){ echo $param; } funcName(); Result: "value" 

我们想知道如何为“最后的”parameter passing默认值? 我知道这个术语是离开的,但是一个简单的例子是:

 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()来合并两个数组,用第二个数组中的任何重复元素覆盖第一个数组。

不幸的是,这是不可能的。 为了解决这个问题,我build议在你的函数中添加下面这行:

 $param1 = (is_null ($param1) ? 'value1' : $param1); 

你可以这样称呼它:

 funcName (null, 'non default'); Result: value1 non default 

你的问题的简单解决scheme是,而不是使用:

 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