我已经用PHP编程一段时间了,但我仍然不理解==和===之间的区别。我知道=是赋值,==是等于。那么===的目的是什么?
我已经用PHP编程一段时间了,但我仍然不理解==和===之间的区别。我知道=是赋值,==是等于。那么===的目的是什么?
它同时比较值和类型是否相等。
if("45" === 45) //false
if(45 === 45) //true
if(0 === false)//false
它有一个类似的运算符: !==,用于比较类型和值的不等
if("45" !== 45) //true
if(45 !== 45) //false
if(0 !== false)//true
这对于像strpos这样的函数特别有用 - 它可以有效地返回0。
strpos("hello world", "hello") //0 is the position of "hello"
//now you try and test if "hello" is in the string...
if(strpos("hello world", "hello"))
//evaluates to false, even though hello is in the string
if(strpos("hello world", "hello") !== false)
//correctly evaluates to true: 0 is not value- and type-equal to false
这里有一张好的维基百科表格,列出了其他具有三等号类比的语言。
虽然 === 比较值和类型,但有一种情况尚未提及,那就是使用 == 和 === 比较对象。
给定以下代码:
class TestClass {
public $value;
public function __construct($value) {
$this->value = $value;
}
}
$a = new TestClass("a");
$b = new TestClass("a");
var_dump($a == $b); // true
var_dump($a === $b); // false
对于对象来说,=== 比较的是引用而不是类型和值(因为 $a 和 $b 都具有相等的类型和值)。
它将检查数据类型和值是否相同
if ("21" == 21) // true
if ("21" === 21) // false
===
比较值和类型。
“==”不会比较类型,而“===”会。
0 == false
评估为true,但是
0 === false
不
这是一个真正的相等比较。
例如,"" == False
是 true
。
"" === False
是 false
。