0

在 PHP 上,您有以下代码:

if($var) {
    //do something
}

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

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

我知道这并不意味着:

  • $var已经设置好了

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

4

1 回答 1

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具有非假值,则评估为

我建议强制转换并检查特定类型。

我也不同意明确的检查是“垂死的艺术”。请注意以下事项:

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

于 2013-03-19T17:39:36.100 回答