为什么检查(isset($ something)&& $ something)?

时间:2012-12-31 05:09:24

标签: php if-statement isset

我刚刚在php文件中看到类似下面的内容,我想知道为什么要检查两者。

if( isset($var) && $var ) {

// Code

}

这有意义吗?

3 个答案:

答案 0 :(得分:3)

isset - 如果存在则返回TRUE且不为NULL,否则为FALSE。

以上例如。 $var = 0

isset的第一个条件将返回true,而第二个条件将返回false。

因此,如果您想检查变量是否已设置,将使用上述条件。具有非零值。

答案 1 :(得分:3)

如果定义了变量,

isset将返回true,而如果变量不为空或零,则默认布尔测试将返回true。您希望在测试其值之前使用isset以防止未定义的变量错误。

if ($var) // returns true if the variable isn't empty or zero

if (isset($var)) // returns true if the variable is defined and not NULL

如果php错误报告级别包含通知(E_NOTICE),则测试未定义的变量将报告未定义的变量错误。

但是,您不需要在函数isset之前使用empty

如果变量不存在,则不会生成警告。这意味着empty()基本上简洁等同于!isset($var) || $var == false

答案 2 :(得分:1)

在php中编写“notices”报告为错误是一种很好的做法。如果检查变量的值,但未设置该变量,则可能意味着您输入了拼写错误,并将其标记为“错误”。然后你可以修复你的拼写错误并继续前进。如果你没有通知,那么你可能永远不会发现拼写错误,变量将与empty / null / false相同(取决于你的比较),所以你可能永远不会得到你的“真实”条件。所以打开通知并节省数小时的调试时间。

但有时有时您可能知道某个变量可能未设置 - 为了避免将其报告为错误,您首先检查变量是否为“set”。这是您在代码示例中阅读的内容。