等于符号(==)的比较方式

PHP代码中执行==运算时,要求两边的数据类型要一致,举个例子:

<?php 
$str = "0dff";
if (0 == $str) {
	echo "true";
}else{
	echo "false";
}
 
?>

这段代码的运行结果为:

image-20210411173830697

得出true的原因是等号右边的字符串由于需要进行数据类型强制转换,其转换结果为整型0。因此得到等号两边结果相等的结论。这是一系列弱语言的缺点。PHP利用===比较符来解决该问题。

全等于符号(===)的比较方式

===比较符属于全等于比较,相较于==,其要求异常严格。全等于符号比较过程如下:

  1. 判断全等于操作符2边的数据类型是否相同 如果不相同,则返回false
  2. 判断全等于操作符2边的值是否相等,如果 不相等,则返回false
  3. 最后将上面2步的操作进行与操作。返回与操作的结果。

举个例子:

<?php 
$str = "0dff";
if (0 === $str) {
	echo "true";
}else{
	echo "false";
}
 
?>

其运行结果如下:

image-20210411174630354

结论

虽然弱语言方便我们开发人员,但在涉及权限或者财务等功能设计时,我们就需要对所使用的比较符或者相关函数的操作严格性做一个详细的评估,避免出现相关安全漏洞。