【发布时间】:2012-02-28 07:54:29
【问题描述】:
我对 PHP 函数的默认值感到困惑。假设我有这样的功能:
function foo($blah, $x = "some value", $y = "some other value") {
// code here!
}
如果我想为 $x 使用默认参数并为 $y 设置不同的参数怎么办?
我一直在尝试不同的方法,但我越来越困惑。比如我试过这两个:
foo("blah", null, "test");
foo("blah", "", "test");
但是这两个都不会导致 $x 的正确默认参数。我也试过用变量名来设置它。
foo("blah", $x, $y = "test");
我完全期望这样的事情能够奏效。但它根本不像我预期的那样工作。似乎无论我做什么,每次调用该函数时,我最终都必须输入默认参数。而且我一定遗漏了一些明显的东西。
【问题讨论】:
-
你可能没有错过任何东西,PHP 开发人员可能错过了。
-
这是一个有趣的问题。正如你所说,我实际上从来没有需要这样做,因为当我不确定什么依赖于原始时,我只使用默认参数来扩展其他程序员继承的函数。我很好奇答案。
-
一段时间以来我见过的最好的问题之一!你试过什么都不通过吗?
foo("blah", , "test");? -
规则是默认参数只能跟在参数后面。那就是你可以有 foo("blah") 和 x,y 是默认值,或者 foo("Blah","xyz") 和 y 是默认值。
-
预期行为。请参阅php.net/manual/en/functions.arguments.php 中的“默认参数值”部分——空值和空字符串被接受为函数的实际参数