isset($ foo)在功能上与!$ foo相同吗?

时间:2013-06-17 19:14:15

标签: php

isset($foo)始终会显示与!$foo相同的结果吗?

我有一段代码,我正在使用php警告:

if(!$foo){}

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

if(!isset($foo)){}

这让我很好奇我是否在这里更改功能。

3 个答案:

答案 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的某个值。因此,即使设置了变量,您也可能会出现意外行为