У меня есть странное поведение с функцией распаковки. У меня есть упакованная строка, хранящаяся как longblob в базе данных mysql. Когда я читаю эту строку и распаковываю ее, она дает мне массив, настолько хороший. Но когда я запускаю это на другой машине, некоторые из значений в массиве отличаются.Unpack() предоставляет различные результаты на разных машинах
Когда я выгружаю данные из 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 (на одном, что это нормально, на другой нет)
ли одна машина работает 32-разрядное PHP и другой работает 64-разрядное PHP? –
не уверен в этом, uname -a приносит мне «x86_64» на обеих машинах. Будет ли способ, если один из них 32, другой - 64? – Ben
'echo PHP_INT_SIZE * 8;' – AbraCadaver