前段时间写的代码运行总有问题,后来一查是由于判断的问题,判断前端传来的字符串是不是预期的值,好比这样的代码php
<?php $Input = '2,321'; if ($Input == 2) { echo '相等'; } else { echo '不等'; }
这样输出的结果是相等,而一旦去掉逗号就会输出不等前端
略微思考和验证了下,这是由于php的隐式类型转换形成的问题函数
因为php是弱类型语言,能够将不一样类型的变量进行比较,比较的时候php便会尝试进行转换类型,'2,321'会被尝试转换为数字code
经过手动调用intval函数对'2,321'进行转换获得整数2,正好与右边的2相等,因此为true字符串
不过我有点不清楚为何不是2被隐式转换为字符串2呢,我尝试了更换左右结果同样,这个优先级是如何肯定呢?class