这个感叹号在PHP中意味着什么?

时间:2012-04-03 13:44:36

标签: php if-statement isset

  

可能重复:
  Reference - What does this symbol mean in PHP?
  Getting confused with empty, isset, !empty, !isset

在PHP中有什么区别:

if(!isset) 
if(isset)

if(!empty)if(empty)相同?

“!”是什么性格意味着什么?

3 个答案:

答案 0 :(得分:20)

!是逻辑否定或NOT运算符。它颠倒了逻辑测试的意义。

那是:

    如果if(isset)符合逻辑isset
  • True会发生一些事情。
  • 如果if(!isset)符合逻辑 isset ,则
  • False会发生一些事情。

有关PHP documentation.!查找&&的运算符(逻辑和其他类型)的更多信息,以巩固您对它的作用的理解。当你在那里时,也要查找其他逻辑运算符:

  • ||逻辑AND
  • xor逻辑或
  • {{1}}逻辑EXCLUSIVE-OR

在逻辑陈述中也常用。

答案 1 :(得分:8)

!字符是逻辑“非”运算符。它反转了表达式的布尔含义。

如果您的表达式的评估结果为TRUE,则前缀为!会导致其评估为FALSE,反之亦然。

$test = 'value';

var_dump(isset($test));  // TRUE
var_dump(!isset($test)); // FALSE

如果给定变量在当前作用域中使用非空值定义,则

isset()返回TRUE

如果给定变量在当前作用域中定义的,或者如果定义的值为“空”,则

empty()返回TRUE。这些值是:

NULL    // NULL value
0       // Integer/float zero
''      // Empty string
'0'     // String '0'
FALSE   // Boolean FALSE
array() // empty array

根据PHP版本,没有属性的对象也可能被视为空。

这样做的结果是isset()empty() 几乎相互称赞(它们返回相反的结果)但不完全,因为empty()执行了额外检查变量的值,isset()只是检查它是否已定义。

考虑以下示例:

var_dump(isset($test)); // FALSE
var_dump(empty($test)); // TRUE

$test = '';

var_dump(isset($test)); // TRUE
var_dump(empty($test)); // TRUE

$test = 'value';

var_dump(isset($test)); // TRUE
var_dump(empty($test)); // FALSE

答案 2 :(得分:3)

$var = 0;

// Evaluates to true because $var is empty
if (empty($var)) {
    echo '$var is either 0, empty, or not set at all';
}

// Evaluates as true because $var is set
if (isset($var)) {
    echo '$var is set even though it is empty';
}

编辑:

这是一个测试用例:

$p = false;
echo isset($p) ? '$p is setted : ' : '$p is not setted : ';
echo empty($p) ? '$p is empty' : '$p is not empty';
echo "<BR>";
设置了

$ p:$ p为空