大きな配列に添字を付ける場合の問題テスト コードは次のとおりです: $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)); //检查反序列化结果 配列 ( [135893597710] =>123 )