PHP 数组下标负数的问题
例如$re=array(-99,66,1,-2=>array(1,2));用PHP函数ar_export输出(即print_r(var_export($re));)输出的...
例如$re=array(
-99,66,1,-2=>array(1,2)
);用PHP函数ar_export输出(即print_r(var_export($re));)
输出的结果
左半部分是windows环境下输出的结果 右半部分是服务器输出的结果(linux系统)
急用 在线等 请大家帮帮忙了!! 展开
-99,66,1,-2=>array(1,2)
);用PHP函数ar_export输出(即print_r(var_export($re));)
输出的结果
左半部分是windows环境下输出的结果 右半部分是服务器输出的结果(linux系统)
急用 在线等 请大家帮帮忙了!! 展开
4个回答
展开全部
这是因为win下是32bit的环境,Linux用的是64位环境。
-2在32bit下的数据为0xFFFF FFFE
-2在64bit下的数据为0xFFFF FFFF FFFF FFFE
而你那未经考虑就直接在64bit下可会导致
得到0x0000 0000 FFFF FFFE得值4294967294
解决办法:根据-2的“产生算法”或“数据来源”作出修改或应对
比如加入
if(PHP_INT_SIZE===4){
//在32bit系统下怎么处理-2
}else{
//在64bit系统下怎么处理-2
}
-2在32bit下的数据为0xFFFF FFFE
-2在64bit下的数据为0xFFFF FFFF FFFF FFFE
而你那未经考虑就直接在64bit下可会导致
得到0x0000 0000 FFFF FFFE得值4294967294
解决办法:根据-2的“产生算法”或“数据来源”作出修改或应对
比如加入
if(PHP_INT_SIZE===4){
//在32bit系统下怎么处理-2
}else{
//在64bit系统下怎么处理-2
}
展开全部
看看exec返换给OS的值是多少。
在linux下,这个返回值也许是无符号类型,返回的是一个正数,所以传给php也是正数了,php实际上也是调用的exec所返回的值。
在linux下,这个返回值也许是无符号类型,返回的是一个正数,所以传给php也是正数了,php实际上也是调用的exec所返回的值。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用linux测试也是左边的结果
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我是不知道你是怎么测试的,我在windows环境下输出的仍然是右边的结果,只能说明使用var_export函数之后只会输出这样的结果
追问
你的windows下也是右边的结果,那是不是我的PHP配置问题,我这边的确是输出的左边的情况
追答
对var_export了解不多,无法做出更详细的解释,只能说php程序不会因为平台的改变而有所改变,这也是为什么php可以跨平台移植的原因
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询