今天发现了一个问题关于 php 中 == 的问题, 写出来怕以后忘了.
PHP的 == 运算符在对字符串进行比较时值得注意的问题,在某些情况下,PHP会把类数值数据(如含有数字的字符串等)转换成数值处理,== 运算符就是其中之一。在使用 == 运算符对两个字符串进行松散比较时,PHP会把类数值的字符串转换为数值进行比较,下面的实验证实了这个结论:
<?php
$a = "120202193711021210";
$b = "120202193711021217";
if($a == $b) echo "true";
else
echo "false";
?>
结果是 ture.
我查了很久没有搞明白.
后来加了几句明白了.
<?php
$a = "120202193711021210";
$b = "120202193711021217";
if($a == $b) echo "true";
else
echo "false";
print (float)$a ;
print (float)$b ;
?>
结果是:
true
1.2020219371102E+17
1.2020219371102E+17
将两个变量转换为float型了.
以后字符串比较最好用strcmp 或是 strcasecmp函数.