4

isset($foo)始终显示与!$foo?

我有一段代码,我在使用时收到 php 警告:

if(!$foo){}

而且我很确定我应该使用:

if(!isset($foo)){}

这让我很好奇我是否要改变这里的功能。

4

3 回答 3

9

不。

使用布尔否定运算符!将变量转换为布尔值。BooleanFALSE等于NULL(这在功能上与 相同isset()),空字符串,0,空数组。

isset如果变量不存在,则不使用错误。如果您使用!不存在的变量,E_NOTICE则会显示。

于 2013-06-17T19:16:55.763 回答
8

不。

一个测试一个值是否未设置,另一个测试它是否为真。

相比:

<?php
$foo = 0;

if(!$foo){ echo 1; }
if(!isset($foo)){ echo 2; }
?>
于 2013-06-17T19:16:18.950 回答
1

这取决于 foo 是什么。

Foo 可以设置为 1 或您应用 not 的某个值。因此,即使设置了变量,您也可能会出现意外行为

于 2013-06-17T19:16:20.360 回答