我正在处理一些数据解析代码,但遇到以下情况。奇怪的PHP字符串整数比较和转换
$line = "100 something is amazingly cool";
$key = 100;
var_dump($line == $key);
那么我们大多数人会想到倾倒产生false
,但让我吃惊的是转储是true
!
我也明白,在PHP中存在类型转换这样的:
$x = 5 + "10 is a cool number"; // as documented on PHP manual
var_dump($x); // int(15) as documented.
但是,为什么像我在第一个例子是如何提到的比较转换我的字符串,而不是整数,那么整数转换为字符串。
我不明白,你可以做一个===
严格,比较我的例子,但我只是想知道:
- 有PHP文档提这种行为的任何部分?
- 任何人都可以解释为什么PHP中发生?
- 程序员如何防止这种问题?
==数字比较我认为,当你把它和字符串,并将它转换为数字,如果它以数字开头,它使用该数字。如果它不会像NaN那样返回。 – rubixibuc 2012-02-13 08:53:55
我们大多数人会期望这....当将一个字符串转换为一个整数(比较字符串与数字时发生的情况)时,PHP会停在它遇到的第一个非数字数字处,在这种情况下为100(所有数字)和“某些东西”之间的空格。 SO 100是结果值。 – 2012-02-13 08:54:17
请参阅http://stackoverflow.com/a/8672423 – Gumbo 2012-02-13 08:54:55