Неправильный анализ PHP int в окнах XAMPP

демо

$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)


person QHu91_IT    schedule 16.06.2015    source источник
comment
php.net/manual/en/language.types.integer.php - Читать о переполнении.   -  person Sougata Bose    schedule 16.06.2015
comment
потому что `$code = '40001042901' - значение представляет собой строку   -  person Faradox    schedule 16.06.2015
comment
64-битное программное обеспечение против 32-битного программного обеспечения   -  person    schedule 16.06.2015
comment
@HoboSapiens, не могли бы вы рассказать подробнее?   -  person Adib Aroui    schedule 16.06.2015
comment
@whitelettersandblankspaces, о чем стоит рассказать? 32-битные системы => максимальное значение int равно 2^31 -1 = 2147483647 == PHP_INT_MAX....   -  person Havelock    schedule 16.06.2015
comment
@white Смотрите мой ответ   -  person    schedule 16.06.2015


Ответы (1)


Ваш результат Linux создается с использованием 64-битного программного обеспечения. Результат Windows исходит от 32-битного программного обеспечения. Разница здесь в максимальном размере целого числа, который в 32-битной системе равен 2 147 483 647.

Когда вы пытаетесь преобразовать строку в целое число, значение слишком велико для 32-битного значения, поэтому PHP использует наибольшее доступное значение.

В 64-битной системе целые числа могут быть намного больше, поэтому PHP может использовать фактическое значение, проанализированное из вашей строки.

person Community    schedule 16.06.2015
comment
+1 Судя по всему, проблема все еще сохраняется в системах Windows x86_64. Хотя это и другие ответы указывают к той же несколько устаревшей информации, и я не очень конечно, исправлено ли это к настоящему времени (например, в 5.5)... - person Havelock; 16.06.2015