【问题标题】:PHP parse int wrong in XAMPP windowsPHP在XAMPP窗口中解析int错误
【发布时间】:2015-08-31 20:35:40
【问题描述】:

演示

$code = '40001042901';
echo (int)$code; //intval($code) //same

我在 linux (Ubuntu) 上测试结果是 40001042901,但在 windows 上结果是 2147483647,这有什么问题?

XAMPP 1.8.3、PHP 5.5.15、Apache 2.4.10 (Win32)

【问题讨论】:

  • php.net/manual/en/language.types.integer.php - 阅读有关溢出的信息。
  • 因为 `$code = '40001042901' - value 是一个字符串
  • 64 位软件与 32 位软件
  • @HoboSapiens,您能详细说明一下吗?
  • @whitelettersandblankspaces 有什么要详细说明的? 32 位系统 => 最大 int 值为 2^31 -1 = 2147483647 == PHP_INT_MAX....

标签: php windows xampp parseint


【解决方案1】:

您的 Linux 结果是使用 64 位软件生成的。 Windows 结果来自 32 位软件。这里的区别是整数的最大大小,在 32 位系统中是 2147483647。

当您尝试将字符串解析为整数时,该值对于 32 位值来说太大了,因此 PHP 使用最大的可用值。

在 64 位系统中整数可以大得多,因此 PHP 可以使用从字符串中解析的实际值

【讨论】:

  • +1 显然问题在 windows x86_64 系统上仍然存在。虽然thisother 的答案指向相同的old piece of information,但我不太确定,这是否已经修复(例如在 5.5 中)......
猜你喜欢
  • 2019-09-07
  • 2013-01-11
  • 1970-01-01
  • 1970-01-01
  • 2014-11-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多