📜  为什么 === 在PHP中比 == 快?

📅  最后修改于: 2022-05-13 01:56:27.831000             🧑  作者: Mango

为什么 === 在PHP中比 == 快?

比较运算符 ==(等式运算符)===(恒等运算符)用于比较两个值。它们也被称为松散相等 (==)运算符和严格相等 (===)运算符。

SymbolNameExampleOutput
==Equality$a == $bTRUE if $a is equal to $b after type juggling
===Identity$a === $bTRUE if $a is equal to $b, and both are of the same type

PHP运算符:PHPPHP有很多运算符,但 == 和 ===运算符严格或随意地执行类似的任务。

  • 如果操作数的类型不同,那么 == 和 === 将产生不同的结果。在这种情况下,运算符的速度会有所不同,因为 == 将执行类型转换然后进行比较。
  • 如果操作数的类型相同,那么 == 和 === 都会产生相同的结果。在这种情况下,两个运算符的速度几乎相同,因为任何运算符都不执行类型转换。

相等运算符== 临时转换数据类型以查看其值是否等于另一个操作数,而 === (身份运算符)不需要进行任何类型转换,因此完成的工作更少,这使得它更快比==。
示例 1:

php
 true as first type
// conversion is done and then
// checked if it is equal or not
var_dump(0 == "a");
 
// 1 == 1 -> true
var_dump("1" == "01");
 
// 10 == 10 -> true
var_dump("10" == "1e1");
 
// 100 == 100 -> true
var_dump(100 == "1e2");
 
// 0 === "a" -> false in this type
// conversion is not done only
// checking is there if they are
// equal or not
var_dump(0 === "a");
 
// "1" === "01" -> false
var_dump("1" === "01");
 
// "10" === "1e1" -> false
var_dump("10" === "1e1");
 
// 100 == "1e2" -> false
var_dump(100 === "1e2");
 
switch ("a") {
case 0:
    echo "In first case";
    break;
     
// Never reached because "a" is already
// matched with 0 as in switch == is used
case "a": 
    echo "In second case";
    break;
}
?>


php


输出:

bool(true)
bool(true)
bool(true)
bool(true)
bool(false)
bool(false)
bool(false)
bool(false)
In first case

示例 2:

PHP


输出:

bool(true)
bool(true)
bool(false)
bool(false)

注意: ===运算符执行“类型安全比较”,仅当两个操作数具有相同的类型和值时才会返回 true,而如果只比较值,则使用 ==。