大数组作数组下标时的问题测试代码如下: $int = 135893597710; print_r($int); print_r(array($int=>1));登录后复制 输出结果在windows上是135893597710Array ( [-1545355762] => 1 ) 到linux的时候就能得到正确的结果135893597710Array ( [135893597710] => 1 ) 请问如何可以在windows上得到正确的结果 分享到: ------解决方案--------------------你的 linux 是 64 位的?似乎也不应该出现这种问题 先不去管他吧,等有 64位 linux 的朋友测试以后再说 假定序列化后的是这样的串:a:1:{i:135893597710;i:123;} 则有 $s = 'a:1:{i:135893597710;i:123;}'; $s = preg_replace_callback('/i:(\d{10,});/', function($r) { return sprintf('s:%d:"%s";', strlen($r[1]), $r[1]); }, $s); //将大整数改成字符串 print_r(unserialize($s)); //检查反序列化结果 登录后复制Array ( [135893597710] => 123 )