在PHP上,您有以下代码:
if($var) {
//do something
}
这意味着什么(除了我在下面指出的表达方式之外),我知道//do something
将在以下情况下执行:
$var
不是false
$var
不是0 $var
不是空字符串或数组$var
不是null
我知道这并不意味着:
$var
已设置上面的代码似乎代表了PHP(以及javascript和python)对测试变量的方式。我倾向于明确检查(即$var == TRUE
或$var != 0
),但这似乎(在某种程度上)是“垂死的艺术”
答案 0 :(得分:1)
if($ var)仅在$ var的值包含非false的内容时才执行true。如果你想知道什么是false / true的值,请看下面的php.net
var_dump((bool) ""); // bool(false)
var_dump((bool) 1); // bool(true)
var_dump((bool) -2); // bool(true)
var_dump((bool) "foo"); // bool(true)
var_dump((bool) 2.3e5); // bool(true)
var_dump((bool) array(12)); // bool(true)
var_dump((bool) array()); // bool(false)
var_dump((bool) "false"); // bool(true)
和如果($ var)有一个定义(据我所知),如果 $ var 有一个定义,则评估 true 非错误值
我建议您投射并检查特定类型。
此外,我不同意明确的检查是“垂死的艺术”。请注意以下事项:
$var = 1;
if($var) // returns true since $var is 1
然而,
if ($var === true) // returns false since $var is not true its 1
结论: 如果我想特别检查$ var必须保持一个布尔值我不会使用 if($ var),因为它会在系统中创建一个错误。