Задать вопрос

Баг var_export массива, когда его ключи отрицательные числа?

<?php
$data = array('moder'=> array(
    -2 => array(
        2=>1,
        1=>1,
        0=>1,
        -1=>-1,
        -2=>-2,
    )
));
print '<pre>';
print '<h1>print_r</h1>';
print_r($data);

print '<h1>var_dump</h1>';
var_dump($data);
print '</pre>';

print '<h1>var_export (BAD keys!!!)</h1>';
$code = '<?php
return '.var_export($data, true);
print highlight_string($code);

print '<h1>serialize</h1>';
print serialize($data);

print '<h1>some script</h1>';
highlight_file(__FILE__);


Результат (привожу только отличающиеся части):
PHP 5.3.2-1ubuntu4.11 with Suhosin-Patch (cli) (built: Dec 13 2011 18:49:27)
#24-Ubuntu SMP Fri Jan 7 18:30:50 UTC 2011 x86_64 GNU/Linux
<?php
return array (
  'moder' => 
  array (
    18446744073709551614 => 
    array (
      2 => 1,
      1 => 1,
      0 => 1,
      18446744073709551615 => -1,
      18446744073709551614 => -2,
    ),
  ),
)


PHP 5.3.10-1ubuntu3.2 with Suhosin-Patch (cli) (built: Jun 13 2012 17:20:55)
#43-Ubuntu SMP Fri Jul 6 15:06:05 UTC 2012 i686 i686 i386 GNU/Linux
<?php
return array (
  'moder' => 
  array (
    -2 => 
    array (
      2 => 1,
      1 => 1,
      0 => 1,
      -1 => -1,
      -2 => -2,
    ),
  ),
)


Как добиться одинаковых ожидаемых результатов вне зависимости от платформы?
  • Вопрос задан
  • 2529 просмотров
Подписаться 2 Оценить Комментировать
Решения вопроса 1
Melkij
@Melkij
PostgreSQL DBA
Баг был в 5.2.х, в 5.3.4 закрыт. bugs.php.net/bug.php?id=52534
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
nazarpc
@nazarpc
Open Source enthusiast
Видимо, баг был в 5.3.2, а в 5.3.10 уже исправлен.
Система x86 или x64?
Ответ написан
nazarpc
@nazarpc
Open Source enthusiast
Попробуйте указывать ключи не как -1, а как '-1' — в виде строк.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы