巧合的是,我遇到了关于 PHP 数组及其键的非常奇怪的行为。考虑创建一个 PHP 数组。
$arr[2250572483]=1;
//dump the array
var_dump($arr);
//Result:
array(1) { [-2044394813]=> int(1) }
不知何故,数组键已将其值更改为完全不同的负数。这导致我进行了一些进一步的调查,但仍然没有定论。
在下面的示例中,我在数字范围 2250572300 和 2250572500 之间循环。时间对我来说是稀缺的,所以我没有设法确定这种现象开始发生的数字,因为我在循环大量数字时耗尽了内存。我认为它应该在 2100000000 到 4300000000 之间。
$arr2 = array();
for($i=2250572300; $i<= 2250572500; $i++){
$arr2[$i]=$i;
}
echo "<pre>".var_export($arr2,true)."</pre>";
我的问题是:有谁知道这是如何发生的以及为什么会发生,目前是否正在采取任何措施来解决这个问题?
从本质上讲,这是 PHP 中的一个主要设计缺陷,当您处理数组中的数字时,可能会使 PHP 变得无用,例如供应商、发票、项目编号等。
谢谢