isset($foo)
始终会显示与!$foo
相同的结果吗?
我有一段代码,我正在使用php警告:
if(!$foo){}
而且我很确定我应该使用:
if(!isset($foo)){}
这让我很好奇我是否在这里更改功能。
答案 0 :(得分:9)
没有
使用布尔否定运算符!
将变量转换为布尔值。布尔FALSE
等于NULL
(这在功能上与isset()
相同),空字符串,0,空数组。
使用isset
如果变量不存在,则不会给出错误。如果您将!
与不存在的变量一起使用,则会显示E_NOTICE
。
答案 1 :(得分:8)
没有
一个测试是否未设置值,另一个测试是否为真。
比较
<?php
$foo = 0;
if(!$foo){ echo 1; }
if(!isset($foo)){ echo 2; }
?>
答案 2 :(得分:1)
这取决于foo是什么。
Foo可以设置为1或您应用not的某个值。因此,即使设置了变量,您也可能会出现意外行为