在我处理数据解析代码时,我遇到了以下问题。
$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中发生了什么吗?
- 程序员如何避免这种问题?