<?php$a = "123";$b=123;if($a==$b){ echo "这两个值是相等的";}else{ echo "这两个值是不相等的";}?>
如果你运行一下,会创造,以上会输出以下内容:
这两个值是相等的
同样的,我们再看其余一个例子:
<?php$a = "123";$b=123;if($a===$b){ echo "这两个值是相等的";}else{ echo "这两个值是不相等的";}?>
同样再次运行,会输出:

这两个值是不相等的
那么问题来了,就多了一个=号输出内容却不一致,这是为什么呢?这便是我们要说的类型转换。
在PHP中,有4种常见类型之间是可以自动相互转换的,在对他们进行比较时,会相互进行转换,然后再进行判断。这4个类型是:int(整型)、float(浮点型)、string(字符型)、bool(型)。
==和===也是有差异的:
==在判断两个值是否相等时,不会进行类型的判断,会自动地进行类型的转换,比如以上,会把$a转换成整型,再进行比拟两个值是相等的。
===在判断两个值是否相等时,会前辈行类型的判断,以上第二个例子中$a是字符型,而$b是整型,两个属于不同的类型,以是会不相等。
那么如何把上面的例子2中的变量$a来进行类型转换呢,有两种方法,看下面两个例子:
<?php$a = "123";$b=123;if((integer)$a===$b){ echo "这两个值是相等的";}else{ echo "这两个值是不相等的";}?>
以上会输出:
这两个值是相等的
再看一个例子:
<?php$a = "123";$b=123;settype($a,'integer');if($a===$b){ echo "这两个值是相等的";}else{ echo "这两个值是不相等的";}?>
以上会输出:
这两个值是相等的
由上得知,类型转换有两种办法:
1.在变量前添加相要转换的类型,例如 (integer)$a;
2.利用系统内置函数,settype,例如settype($a,'integer');