在PHP中,您可以调用函数。通过使用这些语句不调用所有参数。
function test($t1 ='test1',$t2 ='test2',$t3 ='test3')
{
echo "$t1, $t2, $t3";
}
你可以使用像这样的功能
test();
所以我只想说我想让最后一个与众不同而不是其他人。我能做到的唯一方法是做到这一点,但没有成功:
test('test1','test2','hi i am different');
我试过了:
test(,,'hi i am different');
test(default,default,'hi i am different');
做这样的事情的最佳方式是什么?
答案 0 :(得分:25)
使用数组:
function test($options = array()) {
$defaults = array(
't1' => 'test1',
't2' => 'test2',
't3' => 'test3',
);
$options = array_merge($defauts, $options);
extract($options);
echo "$t1, $t2, $t3";
}
以这种方式调用您的函数:
test(array('t3' => 'hi, i am different'));
答案 1 :(得分:10)
使用原始PHP无法做到这一点。您可以尝试以下方式:
function test($var1 = null, $var2 = null){
if($var1 == null) $var1 = 'default1';
if($var2 == null) $var2 = 'default2';
}
然后调用您的函数,null
作为默认变量的标识符。您还可以使用具有默认值的数组,使用更大的参数列表会更容易。
更好的是尽量避免这一切,并重新考虑一下你的设计。
答案 2 :(得分:2)
默认值的参数必须是最后一个,在其他参数之后,在PHP中,并且在调用函数时必须填写所有其他参数。无论如何我都不知道传递一个触发默认值的值。
答案 3 :(得分:1)
在这些情况下我通常做的是将参数指定为数组。看看下面的例子(未经测试):
<?php
test(array('t3' => 'something'));
function test($options = array())
{
$default_options = array('t1' => 'test1', 't2' => 'test2', 't3' => 'test3');
$options = array_merge($default_options, $options);
echo $options['t1'] . ', ' . $options['t2'] . ', ' . $options['t3'];
}
?>
答案 4 :(得分:0)
您可以定义如下函数:
function grafico($valores,$img_width=false,$img_height=false,$titulo="title"){
if ($img_width===false){$img_width=450;}
if ($img_height===false){$img_height=300;}
...
}
并且在没有持久的参数的情况下调用它 用“false”替换一个或几个:
grafico($values);
grafico($values,300);
grafico($values,false,400);
grafico($values,false,400,"titleeee");