我在使用php作字符串比较的时候,遇到了坑,如代码所示:
<?php
var_dump('00E73694765433'=='0'); //true
var_dump('0134b40fsbi94u8'=='0'); //false
var_dump('0134b40fsbi94u8'=='134'); //false
echo PHP_EOL;
var_dump(is_numeric('00E73694765433'));//true
var_dump(is_numeric('0134b40fsbi94u8'));//false
?>
第一个得到的结果是true,而第二个为false。翻了一下官方文档,如果第①个强制转换成数字 0,那么第②个应该强制转换成134,但是如果是转为134则第③个应该是正确的。
我打印了一下两个字符串,得出来的结果也很奇怪,看了官方文档根本搞不懂,求大神指教一下!
http://www.php.net/manual/zh/...
var_dump('0134b40fsbi94u8'=='134'); //false 是比较的
因为都是字符串 就先比较第一位 第一位的比较结果 是0和1的比较 所以 是false
另外 字符串之间的不建议使用比较运算符直接去比较大小,要是在需要比较php也提供了一些字符的比较函数
不同类型的数据比较,最好还是用全等===和不全等!==运算符.
因为比较运算符全等===和不全等!==会对类型进行检查:
一句话,比较时尽量用===和!==而不用==和!=.
此外,PHP还提供了一系列类型检查函数:
一些函数,也提供有类型检查参数,需要注意,比如:
第三个参数的值为 true 则函数还会检查类型是否相同.
另外,PHP还支持用比较运算符==,!=,===,!==来比较两个数组或两个对象是否相等.
PHP还支持用比较运算符(==,!=,===,!==)判断两个对象是否相等:
你第一个字符串恰好符合了科学计数法。
对于类型限制不严的语言,常有这样的坑上新闻。
尽量使用严格带类型的检查
对于 php 这种弱类型语言,能用
===
就别用==