测试代码如下:$int = 135893597710;
print_r($int);
print_r(array($int=>1));输出结果在windows上是135893597710Array ( [-1545355762] => 1 )
到linux的时候就能得到正确的结果135893597710Array ( [135893597710] => 1 )
请问如何可以在windows上得到正确的结果
print_r($int);
print_r(array($int=>1));输出结果在windows上是135893597710Array ( [-1545355762] => 1 )
到linux的时候就能得到正确的结果135893597710Array ( [135893597710] => 1 )
请问如何可以在windows上得到正确的结果
print_r($int);
print_r(array($int=>1));?>
先不去管他吧,等有 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
)
php 并没有发行 for window 的 64位版本
不过
测试最大int仍然是2^32-1 (win7 x64)
我自己编译的64位php和网上下载的wamp64位版本,都不行
另外一定是要 VC9 以上的编译器,最好是 VC10 以上的