【发布时间】:2011-12-23 10:53:32
【问题描述】:
PHP 中的!= 和<> 运算符有什么区别?我需要检查一个变量是否不等于NULL。我应该使用哪个运算符?
【问题讨论】:
-
您可以在此处阅读答案:stackoverflow.com/questions/3956362/… - 要检查某些内容是否为
NULL,您可以使用is_null()。
PHP 中的!= 和<> 运算符有什么区别?我需要检查一个变量是否不等于NULL。我应该使用哪个运算符?
【问题讨论】:
NULL,您可以使用 is_null()。
这两个运算符没有区别。
要检查NULL,您可能需要改用身份运算符===:
$a = 0;
if ($a == NULL) {
// executes
}
上述条件实际上计算为真。但是,使用身份运算符,您可以检查变量 是否真的 NULL(或者:TRUE 或 FALSE 或其他任何东西,您需要检查其 实际值,不是先前类型转换的结果)。希望这是有道理的。
编辑:要实际回答问题并参考我的咆哮,为了检查变量是否不为空,您可以使用身份运算符的对应项@987654327 @(或 is_null() 其他答案和 cmets 中的建议)。
【讨论】:
见PHP docs:
上面写着:
$a != $b Not equal TRUE if $a is not equal to $b after type juggling.
$a <> $b Not equal TRUE if $a is not equal to $b after type juggling.
该页面上还有一个表格,说明了如何处理 null。此外,有关type comparisons 的讨论,请参阅此页面。
【讨论】:
第一个 Google 结果:
【讨论】:
==' (Equal):
if("22" == 22) echo "YES";
else echo "NO";
上面的代码将打印“YES”。原因是操作数的值相等。而当我们运行下面的示例代码时:
'===' (Identical):
if("22" === 22) echo "YES";
else echo "NO";
我们得到的结果是“NO”。原因是虽然两个操作数的值相同,但它们的类型不同,“22”(带引号)是字符串,而 22(不带引号)是整数。但是如果我们把上面的代码改成下面这样:
if("22" === (string)22) echo "YES";
else echo "NO";
没有这样的运算符,它们是用于整数变量的=。
要检查空值,您应该使用:
if($a == 'null') or if (isset($a))
两者的工作方式相似。
【讨论】: