我有一个PHP函数,如下所示:
function($foo = 12345, $bar = false){}
我想要做的是,调用此函数时使用$ foo传递的默认参数,但$ bar设置为true,就像这样(或多或少)
function(DEFAULT_VALUE, true);
我该怎么办?如何在不知道该值的情况下将参数作为函数的默认值传递?
提前致谢!
答案 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);