- 论坛徽章:
- 0
|
比如某个数组有个下标为2,222,222,222,大于32位整数的最大值(2,147,483,647),
在本机调试时正常,用var_export显示该数组,会发觉该下标被自动加上单引号,如下面这个脚本
<?php
$a = array();
$a['222'] = 'small';
$a['2222222222'] = 'OS:'.php_uname('s r m').',PHP:'.phpversion();
$a['222222222222222222222222222222222222'] = 'big!';
var_export($a);
?> |
在win下输出
array ( 222 => 'small', '2222222222' => 'OS:Windows NT,PHP:5.2.6', '222222222222222222222222222222222222' => 'big!', )
而在linux下输出
array ( 222 => 'small', -2072745074 => 'OS:Linux,PHP:5.2.10-2ubuntu6', '222222222222222222222222222222222222' => 'big!', )
即,在linux平台下,非常不幸,这个下标被解释一个负数,因为超过了32位整数的最大值,尽管我们已经明确指定下标为字符串.但为什么最大的字符串又没有呢?
怎么办?
补充:
我在另一台也是32位的linux上测试了,却是和win一样的
array ( 222 => 'small', '2222222222' => 'OS:Linux,PHP:5.2.9', '222222222222222222222222222222222222' => 'big!', )
原因在哪?编译的时候要指定什么吗?出错的那台是ubuntu9.10自带的php.会不会与php.ini有关?但实在找不到有哪个选项是管这个的
[ 本帖最后由 gydoesit 于 2010-1-8 19:14 编辑 ] |
评分
-
查看全部评分
|