为什么 === 的速度比 == 快?
程序员文章站
2022-03-16 17:14:04
...
比较运算符 == (相等运算符) 和 === (恒等运算符) 用于比较两个值。他们也被称为 宽松等于 (==) 和 严格等于 (===) 运算符。
符号 | 名称 | 例子 | 输出结果 |
---|---|---|---|
== | 等于 | $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教程》
以上就是为什么 === 的速度比 == 快?的详细内容,更多请关注其它相关文章!
上一篇: 消息推送,实时聊天
下一篇: php基础:php中for语句的详细介绍
推荐阅读
-
推荐一个比 ls 命令速度快 100 倍的文件目录浏览神器
-
从用户决策路径来看,为什么19元的价格比99元好卖的多?
-
php 函数当中实现相同功能但是速度有差异的有哪些,为什么速度会有差异?
-
用PHP实现的生成静态HTML速度快类库_php实例
-
老话题了.PHP导出EXCEL,phpexcel类很强大,但是效率低速度慢,fputcsv速度快但不知道怎么解决科学计数法的问题,求老司机传授经验
-
用PHP实现的生成静态HTML速度快类库_PHP教程
-
为什么PHP开发的软件比JAVA要便宜那么多?存在即合理
-
mysql中索引使用不当速度比没加索引还慢的测试
-
C# Dynamic关键字之:dynamic为什么比反射快的详解
-
C# Dynamic关键字之:dynamic为什么比反射快的详解