调用函数时使用默认值

时间:2009-10-25 12:14:42

标签: php default-arguments

在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');

做这样的事情的最佳方式是什么?

5 个答案:

答案 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");