示例:
function example($x = "")
{
Do something
}
默认情况下,$ x是否为空?为什么要明确地设置它?
答案 0 :(得分:6)
默认情况下,$ x是否为空?
如果未指定默认值,则默认情况下$x
不是空字符串,而是未定义的变量。 ""
和NULL
之间存在差异或未定义
但是,设置默认值允许您在调用函数时省略该参数,而不会发出警告。
<?php
function test1($x = "DEFAULT") {
echo $x;
}
function test2($x) {
echo $x;
}
// Call each without the parameter $x:
test1();
// DEFAULT
test2();
// Output:
PHP Warning: Missing argument 1 for test2(), called in /home/mjb/test.php on line 10 and defined in /home/user/test.php on line 5
PHP Notice: Undefined variable: x in /home/user/test.php on line 6
答案 1 :(得分:3)
主要原因是在声明上设置默认值会使参数成为可选参数:
$a = example();
$b = example(5);
答案 2 :(得分:1)
当您重复使用您没有明确设置变量的函数时,有一个原因。当默认设置为true或false时,会发生这种情况。这样一个函数似乎可以像其他oop语言一样重载。如果该变量不包含默认值,则您必须始终设置该值,否则您的函数会抛出错误,但是,通过将变量设置为默认值,您不必设置该值的值。变量。希望有所帮助:)
答案 3 :(得分:1)
一旦我使用默认值的原因是我在调用函数时不必声明变量,即:
function something(debug=false){
doing something here;
if ($debug === true){
echo 'SOMETHING';
}else{
return true;
}
}
这样你可以调试一些东西,只需将变量添加到函数调用中,但是如果你不添加它,那么函数假定它是假的。这在我的$ _GET安全函数中非常有价值,当我打开调试时,我用来加密我的$ _GET字符串$ _GET被解码并作为数组转储到
中<pre>print_r($_GET);</pre>
这样我就可以看到$ _GET中的值是什么,但字符串仍在地址栏中加密。
希望有所帮助