0

I just saw something like the following in a php file and I'm wondering why you would check both.

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

// Code

}

Does this make sense?

4

3 回答 3

3

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

在上面例如。为了$var = 0

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

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

于 2012-12-31T05:13:32.127 回答
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.

于 2012-12-31T05:16:56.617 回答
1

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

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

于 2012-12-31T05:20:51.483 回答