PHP将默认参数传递给函数

时间:2011-01-05 15:55:45

标签: php function default

我有一个PHP函数,如下所示:

function($foo = 12345, $bar = false){}

我想要做的是,调用此函数时使用$ foo传递的默认参数,但$ bar设置为true,就像这样(或多或少)

function(DEFAULT_VALUE, true);

我该怎么办?如何在不知道该值的情况下将参数作为函数的默认值传递?

提前致谢!

5 个答案:

答案 0 :(得分:10)

这在PHP中本身不可行。有一些解决方法,比如使用数组传递所有参数而不是一行参数but they have massive downsides

我能想到的最佳手动解决方法是定义一个具有任意值的常量,该值不会与实际值发生冲突。例如,对于永远不能为-1的参数:

define("DEFAULT_ARGUMENT", -1);

并测试:

function($foo = DEFAULT_ARGUMENT, $bar = false){}

答案 1 :(得分:3)

反过来说:

function($bar = false, $foo = 12345){}

function(true);

答案 2 :(得分:3)

通常的方法是if (is_null($foo))函数将其替换为默认值。使用null,空字符串等来“跳过”参数。这就是大多数需要跳过参数的内置PHP函数的做法。

<?php
function($foo = null, $bar = false)
    {
    if (is_null($foo))
        {
        $foo = 12345;
        }
    }
?>

答案 3 :(得分:3)

PHP无法做到这一点,所以你必须解决它。由于您已经需要当前形式的函数,只需定义另一个:

function blah_foo($bar)
{
    blah(12345, $bar);
}

function blah($foo = 12345, $bar = false) { }

答案 4 :(得分:-1)

我认为,最好根据最频繁变化的论点排序,$bar例如,我们把它放在第一位,

function foo( $bar = false, $foo = 12345){
// blah blah...
}

所以当你想将$bar传递给true$foo传递给12345时,你就这样做了,

foo(true);