У меня какое-то странное поведение с функцией распаковки. У меня есть упакованная строка, хранящаяся как longblob в базе данных mysql. Когда я читаю эту строку и распаковываю ее, она дает мне массив, пока все хорошо. Но когда я запускаю это на другой машине, некоторые значения в массиве отличаются.
Когда я выгружаю данные из mysql, они равны на обеих машинах.
Распаковка производится так:
$array = unpack("N*", $packed);
$array
тогда должно быть так (и это на одной машине)
Array
(
[1] => 179848175
[2] => -16214255
[3] => 179848175
[4] => -16214255
[5] => 179848175
[6] => -16214255
[7] => 179999949
[8] => -16152916
[9] => 179999277
[10] => -16168574
...
)
А вот на другой машине так:
Array
(
[1] => 179848175
[2] => 427853622
[3] => 179848175
[4] => 427853622
[5] => 179848175
[6] => 427853622
[7] => 179999949
[8] => 427853423
[9] => 179999277
[10] => 427853341
...
)
Каждое второе значение кажется другим.
Я проверил это на трех разных машинах, на двух все было нормально, но на этой машине я получаю странный результат.
На одной машине работает PHP 5.6.3 (тут все ок), на двух машинах работает PHP 5.5.14 (на одной нормально, на другой нет)
PHP_INT_MAX
(значение 2147483647 указывает на 32-разрядную версию) илиPHP_INT_SIZE
(значение 4 указывает на 32-разрядную версию, 8 — на 64-разрядную версию) из PHP-скрипта... просто потому, что операционная система 64-битный, не означает, что PHP, на котором он работает, является 64-битным. - person Mark Baker   schedule 13.07.2015echo PHP_INT_SIZE
показывает 4. К сожалению, я не могу проверить на нерабочей машине прямо сейчас, так как у меня нет к ней доступа до завтра. Если это 64-битный PHP, есть ли способ справиться с этим? - person Ben   schedule 13.07.2015