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系统)
急用 在线等 请大家帮帮忙了!!
展开
 我来答
百度网友9308069
推荐于2018-04-30 · TA获得超过1万个赞
知道大有可为答主
回答量:3947
采纳率:89%
帮助的人:1842万
展开全部
这是因为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

}
无业游民上学校
2012-12-07 · TA获得超过146个赞
知道答主
回答量:126
采纳率:0%
帮助的人:48.6万
展开全部
看看exec返换给OS的值是多少。
在linux下,这个返回值也许是无符号类型,返回的是一个正数,所以传给php也是正数了,php实际上也是调用的exec所返回的值。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
飞扬舞侠
2012-12-07 · TA获得超过271个赞
知道小有建树答主
回答量:294
采纳率:0%
帮助的人:214万
展开全部
用linux测试也是左边的结果
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
a7442358
2012-12-07 · TA获得超过561个赞
知道小有建树答主
回答量:779
采纳率:0%
帮助的人:818万
展开全部
我是不知道你是怎么测试的,我在windows环境下输出的仍然是右边的结果,只能说明使用var_export函数之后只会输出这样的结果
追问
你的windows下也是右边的结果,那是不是我的PHP配置问题,我这边的确是输出的左边的情况
追答
对var_export了解不多,无法做出更详细的解释,只能说php程序不会因为平台的改变而有所改变,这也是为什么php可以跨平台移植的原因
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式