如果($ var)在PHP中有多少含义

时间:2013-03-19 17:35:35

标签: php variables if-statement

在PHP上,您有以下代码:

if($var) {
    //do something
}

这意味着什么(除了我在下面指出的表达方式之外),我知道//do something将在以下情况下执行:

  • $var不是false
  • $var不是0
  • $var不是空字符串或数组
  • $var不是null

我知道这并不意味着:

  • $var已设置

上面的代码似乎代表了PHP(以及javascript和python)对测试变量的方式。我倾向于明确检查(即$var == TRUE$var != 0),但这似乎(在某种程度上)是“垂死的艺术”

1 个答案:

答案 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),因为它会在系统中创建一个错误。