Следующий код PHP
<?php
$x[5076021987]=1234;
var_dump($x);
?>
дает следующий результат на 32bit
архитектура:
array(1)
{
[781054691]=>int(1234)
}
но правильный результат на 64bit
архитектура:
array(1)
{
[5076021987]=>int(1234)
}
Есть ли что-нибудь, что я мог сделать, чтобы заставить это работать должным образом даже на 32bit
арка? Обратите внимание, что преобразование длинных целых в строку не является решением в моем случае. Спасибо.
После проверки всего, PHP документация говорит
Ключ может быть целым числом или строкой.
Проверить Syntax section
,
Вот и получается, что ты должен использование String
в качестве индекса. Определенно нет другого пути.
Если вы покажете, как именно вы получаете эти индексы или какую-то дополнительную информацию о том, что именно вы пытаетесь сделать, я мог бы предложить кое-что еще.
Единственное возможное решение — конвертировать индекс в float
<?php
$index = 5076021987*1.0;
$x[$index]=1234;
var_dump($x);
?>
Это, вероятно, не сработает. Так как, php
собирается преобразовать его обратно в integer
при использовании его в качестве индекса. У меня нет 32-битного ПК, поэтому я не могу его проверить извините.
Если это не сработает, Ты только другая надежда
<?php
$index = 5076021987+0.1; // or even 5076021987*0.1
$x[$index]=1234;
var_dump($x);
?>
А потом использовать это как-то.
Кроме этого, у вас нет другого выбора (кроме преобразования в строку, которую вы не предпочитаете).
Других решений пока нет …