【发布时间】:2016-01-28 20:45:50
【问题描述】:
今天我在和同事谈论 JavaScript 和 PHP 的怪异之处时,发现了一些对我来说非常时髦的东西:
var_dump( 1 == "123" ); // bool(false)
var_dump( 1 == "1 23" ); // bool(true)
第一个例子是我所期望的。 PHP 可能会将“123”强制转换为整数并进行比较。然而,第二个并没有真正的意义。我认为强制规则不允许丢弃“1 23”中的空格和 23 进行比较,但似乎 PHP 只是将它们扔出去做它的业务。
我在这里完全错过了什么吗?
【问题讨论】:
-
使用
===似乎返回false。 -
它需要第一个非数字,因为它是这样写的,documented as such
-
归结为simple call to strtol(...,null, 10),即前导数字被解释为数字,其他所有内容都被忽略。
标签: php string int comparison