偶然にも、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 が役に立たなくなる可能性があります。
ありがとう