关系运算符===(用于相同的)是否可以与!=运算符互换使用“并得到相同的结果?或者当我做更大的程序时,我最终会遇到问题吗?
我知道我会在下面的例子中得到相同的结果,这总是如此吗?
//example 1
<?php
$a = 1; //integer
$b = '1'; //string
if ($a === $b) {
echo 'Values and types are same';
}
else {
echo 'Values and types are not same';
}
?>
// example 2
<?php
$a = 1; //integer
$b = '1'; //string
if ($a != $b) {
echo 'Values and types are not same';
}
else {
echo 'Values and types are same';
}
?>
答案 0 :(得分:6)
简短的回答是,不,你不能互换它们,因为它们会检查不同的东西。他们不是等同的运营商。
你想要使用!==
它基本上意味着要比较的两个值必须是相同的类型。
使用==时,如果需要,要比较的值是类型转换。
如您所知,===也会检查类型。
使用!=时,值也是类型转换,而!==严格检查值和类型。
答案 1 :(得分:2)
您实质上是在询问!($a != $b)
是否始终与$a === $b
相同。简单回答是不。 !($a != $b)
可以归结为$a == $b
,这显然与$a === $b
不同:
php > var_dump(!('0' != 0));
bool(true)
php > var_dump('0' === 0);
bool(false)
!==
显然与===
相反,因此!($a !== $b)
始终与$a === $b
相同。