符号名称例子输出结果
== 等于 $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教程》
以上就是为什么 === 的速度比 == 快?的详细内容。
