站长资讯网
最全最丰富的资讯网站

为什么 === 的速度比 == 快?

为什么 === 的速度比 == 快?

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

符号 名称 例子 输出结果
== 等于 $a == $b 忽略类型,如果 $a 等于 $b 则为 TRUE
=== 恒等于 $a === $b 如果 $a 等于 $b,并且类型相同则为 TRUE

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

  • 如果两个值的类型不同,那么 == 和 === 会得到 不同的结果。运算速度也会有所不同, 因为 == 会先进行类型转换,然后进行比较。
  • 如果两个值类型相同,那么 == 和 === 会得到 相同的结果。 运算速度也几乎相同,两个运算符都不会进行类型转换。

相等运算 == 比较两个值时会临时转换数据类型,而 === (全等运算符)不需要执行任何类型转换,因此计算量减少,速度也更快。

案例 1:

<?php   // 0 == 0 ->  类型相同返回 true // 转换完成,然后 // 检查是否相等 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 // 转换不仅完成 // 还检查是否存在 // 是否相等 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;   // 永远不会匹配 "a" 选项 // 因为 switch 使用的是 ==  case "a":      echo "In sceond case";      break;  }  ?>

输出:

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

案例 2:

<?php   // TRUE - 以下表达式等同于 (bool)1 == TRUE  var_dump(1 == TRUE);   // TRUE - 以下表达式等同于 (bool)0 == FALSE  var_dump(0 == FALSE);   // FALSE - 1 不全等于 TRUE // 1 是整形, TRUE 是布尔型  var_dump(1 === TRUE);   // FALSE - 0 不全等于 FALSE // 0 是整形, FALSE 是布尔型 var_dump(0 === FALSE);  ?>

输出:

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

注意: === 运算符‘类型比较相对安全’, 仅当两个值具有相同的类型和值时才会返回 TRUE, 使用 == 时,值相等就会返回 TRUE。

推荐教程:《PHP教程》

赞(0)
分享到: 更多 (0)

网站地图   沪ICP备18035694号-2    沪公网安备31011702889846号