Php 为什么要检查(设置($something)&;$something)?

Php 为什么要检查(设置($something)&;$something)?,php,if-statement,isset,Php,If Statement,Isset,我在一个php文件中看到了如下内容,我想知道为什么您要同时检查这两个文件 if( isset($var) && $var ) { // Code } 这有意义吗?isset-如果它存在,则返回TRUE,否则返回FALSE 在上面的示例中,对于$var=0 isset的第一个条件将返回true,而第二个条件将返回false 因此,如果您希望检查变量是否已设置并具有非零值,则将使用上述条件。isset如果定义了变量,则返回true;如果变量不是空的或零,则默认布尔测试将返回tr

我在一个php文件中看到了如下内容,我想知道为什么您要同时检查这两个文件

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

// Code

}

这有意义吗?

isset
-如果它存在,则返回TRUE,否则返回FALSE

在上面的示例中,对于
$var=0

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


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

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_通知),测试未定义变量将报告未定义变量错误

但是,在函数
为空之前,不需要使用
isset


如果变量不存在,则不会生成警告。这意味着
empty()!isset($var)|$var==false

在php中编写代码时,最好将“通知”报告为错误。如果您检查某个变量的值,但未设置该变量,则可能意味着您输入了一个错误,并将其标记为“错误”。然后你可以修正你的打字错误,继续前进。如果您没有通知,那么您可能永远不会发现输入错误,并且变量将与空/空/假相同(取决于您的比较),因此您可能永远不会得到“真”条件。因此,打开通知并节省调试时间


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

isset与布尔检查不是100%相同,因此它实际上与!empty()?@reitermarkus看了一下,我已经看了,这对我帮助很大,但是感谢函数特定的链接。当然empty()本质上并不是简洁的等价物!isset($var)| |$var==如果是数组,则为false