PHP字符串比较

来源:互联网 发布:茅台防伪溯源软件下载 编辑:程序博客网 时间:2024/06/06 15:45

在PHP中,可以用==(双等号)或者 ===(三等号)来比较字符串。两者的区别是双等号不比较类型,三等号会比较类型,它不转换类型;用双等号进行比较时,如果等号左右两边有数字类型的值,刚会把另一个值转化为数字,然后进行比较。这样的话,如果是纯字符串或者NULL时,会转化为0进行比较。同样,大小于号也和等号一样,比较时可能出现不正确的结果。

var_dump(0 == 'Test'); var_dump(0 == ''); var_dump(5 > 'T'); var_dump(strcmp('T', 5)); 

上面代码的结果为:

bool(true) bool(true) bool(true) int(1) 

显然‘TEST’ ” 和 ‘T’ 都被转换成了0进行比较了。

但如下几段代码的结果分别是什么呢?

 var_dump("1" == "1e0"); var_dump("1" == "0x1");   var_dump("20" == "2e1");   var_dump("10" == "  0x0a"); 

按理说结果都应该是FALSE,但上面的结果却如下:

boolean trueboolean trueboolean trueboolean true

这是因为这并不是两个普通字符串在比较,而是两个纯数值字符串,“1e0”是科学技术法的1,所以当var_dump(“1” == “1e0”)时也就相当是var_dump(“1” == “1”),因为1e0表示1*10的0次方。其他的也是同理。

原创粉丝点击