我对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");
我完全希望这样的事情能奏效。但这根本不符合我的预期。似乎不管我做什么,每次调用该函数时,无论如何我都必须最终键入默认参数。而且我必须缺少明显的东西。
68
您可能什么都不丢失,PHP开发人员可能错过了这一点。
—
Matti Virkkunen'2
这是一个有趣的问题。正如您所说,我从未真正需要执行此操作,因为当我不确定什么取决于原始参数时,我仅使用默认args扩展其他程序员继承的功能。我很好奇答案。
—
凯庆
我一段时间以来看到的最好的问题之一!您是否尝试过不传递任何内容?
—
马达拉的幽灵2012年
foo("blah", , "test");
?
规则是默认参数只能跟随参数。那就是你可以让foo(“ blah”)和x,y为默认值,或者foo(“ Blah”,“ xyz”)和y为默认值。
—
老鼠食物
预期的行为。请参阅以下部分中的“默认参数值”部分:php.net/manual/en/functions.arguments.php-接受空值和空字符串作为该函数的实际参数
—
jmdavalos