可能重复:
Reference - What does this symbol mean in PHP?
Getting confused with empty, isset, !empty, !isset
在PHP中有什么区别:
if(!isset)
if(isset)
与if(!empty)
和if(empty)
相同?
“!”是什么性格意味着什么?
答案 0 :(得分:20)
!
是逻辑否定或NOT
运算符。它颠倒了逻辑测试的意义。
那是:
if(isset)
符合逻辑isset
,True
会发生一些事情。if(!isset)
符合逻辑 isset
,则False
会发生一些事情。有关PHP documentation.中!
查找&&
的运算符(逻辑和其他类型)的更多信息,以巩固您对它的作用的理解。当你在那里时,也要查找其他逻辑运算符:
||
逻辑AND xor
逻辑或在逻辑陈述中也常用。
答案 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为空