我刚刚在php文件中看到类似下面的内容,我想知道为什么要检查两者。
if( isset($var) && $var ) {
// Code
}
这有意义吗?
答案 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”。这是您在代码示例中阅读的内容。