【问题标题】:php types juggling: 'DEP $925'==0.00?php 类型杂耍:'DEP $925'==0.00?
【发布时间】:2011-08-29 03:08:14
【问题描述】:

为什么php说我'DEP $925'==0.0是真的?

任何人都可以向我指出涵盖此案例的一般规则的来源吗?

--

编辑:抱歉,最初粘贴了错误的表达式:'DEP $925'=='',它的计算结果不正确。请在上方查看

【问题讨论】:

  • 无法复制:var_dump('DEP $925'==''); bool(false)。也许你想给我们更多。
  • 我不知道您是否尝试使用 $925 作为变量,但您不能以数字开头的变量名。另外:我无法重现您的问题。
  • 我没有得到相同的结果。你能显示更多代码吗?
  • 请提供更多周边代码供我们参考
  • @contagious:这是一个单引号字符串,因此 $925 只是文字文本,而不是变量。

标签: php types


【解决方案1】:

这是一个极好的comparison operators cheat sheet - 它表明填充字符串和零整数(无论是00.00 还是0.000000000)之间的松散比较将返回true。

【讨论】:

  • 备忘单可能来自here
  • @jedwards 实际上我已经链接到原件(更容易使用),它在您的链接顶部被记入:灵感是由各种用户 cmet 和工作提供的在 » BlueShoes。
  • 哇。这就是我假设博客总是复制官方文档的结果。感谢您的更正。无论如何,只是想添加一个额外的资源,而不是暗示一个 ref 正在复制另一个。
【解决方案2】:
'DEP $925' == 0.0
string        float

由于您要比较两种不同的数据类型,PHP 会将一种类型转换为另一种类型。在这种情况下,它将字符串转换为浮点数。它不会在那里提取“925”。它会看到字符串以D 开头,它不是数字,所以字符串变成0,也就是0.0 浮点数,并且比较相等。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-04
    • 1970-01-01
    • 1970-01-01
    • 2020-09-29
    • 2013-03-26
    • 2016-10-27
    • 2012-02-22
    • 1970-01-01
    相关资源
    最近更新 更多