【问题标题】:PHP string compare: odd result, possible type juggling, no idea whyPHP字符串比较:奇怪的结果,可能的类型杂耍,不知道为什么
【发布时间】:2013-09-07 07:00:50
【问题描述】:

我知道数字字符串可能会在 PHP 中进行类型处理,但我不明白为什么会在这里发生或给出这个结果:

$a="00010010001101000000101";
$b="00010010001101000000001";

$c = (($a == $b) ? "true" : "false");
$d = (($a === $b) ? "true" : "false");

echo $c . "  " . $d . "\n";  // true false

但在这种情况下,$a 和 $b 的定义方式相同,长度相同,但包含许多字符的不同内容。 ($a == $b) 如何评估为真?

【问题讨论】:

  • 您使用的是什么版本的 PHP?我收到false false
  • 5.4.16 也收到false false
  • 似乎是一个已知的错误,已修复:bugs.php.net/bug.php?id=54547 可以确认至少 PHP 5.4.17 不再受影响。
  • @Scuzzy 您使用的是 php 5.4> 而他使用的是 php 5.3 或更低版本!
  • codepad.viper-7.com 你可以在各种 php 版本中试用它,看看哪些有效,哪些无效

标签: php type-conversion operator-keyword


【解决方案1】:

这是一个错误。在http://3v4l.org/CMld0 上进行测试。

版本4.3.1 - 5.0.55.1.1 - 5.4.3 返回true false

版本5.4.4 - 5.5.3 返回false false

【讨论】:

  • ofc 有 bugs.php.net 。但无需报告此错误,因为它已经修复 >=5.4.4
猜你喜欢
  • 2012-10-04
  • 2019-10-26
  • 2016-02-09
  • 2021-09-07
  • 2011-09-18
  • 1970-01-01
  • 2012-03-09
  • 1970-01-01
  • 2012-02-22
相关资源
最近更新 更多