По стечению обстоятельств я столкнулся с очень странным поведением в отношении массивов 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 бесполезным, когда вы работаете с числами в массивах, например, с поставщиком, счетом-фактурой, номером товара и т. д.
Спасибо