我的代码:
function Check($Variable, $DefaultValue) {
if(isset($Variable) && $Variable != "" && $Variable != NULL) {
return $Variable;
}
else {
return $DefaultValue;
}
}
$a = Check(@$foo, false);
$b = Check(@$bar, "Hello");
//$a now equals false because $foo was not set.
//$b now equals "Hello" because $bar was not set.
isset()
检查了什么?修改
默认值是用户定义的。有时它会是一个数字,有时是一个字符串。
答案 0 :(得分:8)
答案 1 :(得分:2)
null
将通过empty($var)
进行测试,例如:Check(empty($foo) ? null : $foo)
,但视具体情况而定isset
可能更合适isset
的确如此documented - 它会测试范围内是否存在此类变量且其值与null
不相同答案 2 :(得分:2)
当变量不存在且是 传递给函数(压制 错误)实际传递的内容是什么?
在这种情况下,您尝试从不存在的变量中读取
所以,你得到null
- 传递给函数。
是否有任何未定义的行为 这个功能可以展示吗?
不是我看到的 - 除了使用@
运算符不是一个很好的做法。
答案 3 :(得分:2)
您可以通过引用&引用将变量传递给方法。在声明函数时在它前面。然后你可以检查它是否在函数内部设置,而不必担心在传递未设置的值时抑制警告。
function Check(&$Variable, $DefaultValue) {
if(isset($Variable) && $Variable != "" && $Variable != NULL) {
return $Variable;
}
else {
return $DefaultValue;
}
}
$a = Check($foo, false);
$b = Check($bar, "Hello");