PHP奇怪现象,高分求原因所在

原装匪兵甲 2005-11-03 02:40:34
有如下数组,名为$arrPlatformSetAttributionList
Array
(
[51] => Firefox1.0
[33] => IE5.0
[37] => IE5.2(forOSX)
[34] => IE5.5
[35] => IE6.0
[48] => JavaLinux
[47] => JavaMac
[49] => JavaSolaris
[52] => Mozilla1.7
[39] => NA
[40] => NS4.7X
[36] => NS7.0
[38] => NS7.1
[41] => Safari1.0
[42] => Safari1.1
[43] => Safari1.2
[50] => Safari1.3
[44] => WindowsIE
[46] => WindowsnotPureNS
[45] => WindowsPureNS
[54] => Big5
[62] => English
[57] => French
[53] => GB
[58] => German
[55] => Japanese
[56] => Korean
[61] => Spanish
[59] => Swedish
[60] => TSP
[2] => AIX5Lv5.2
[3] => Citrix
[4] => HP-UX11
[5] => IRIX6.5.21
[6] => JC
[8] => Mac10.2
[9] => Mac10.3
[7] => Mac9.0
[10] => RedHat7.0
[11] => RedHat8.0
[12] => RedHat9
[13] => RedHatWSEE
[14] => RedHat_Desktop
[17] => Solaris10
[15] => Solaris8
[16] => Solaris9
[18] => SunJavaDesktop(SuSE)
[19] => TurboLinux
[28] => Win2000SP4
[29] => Win2003server
[32] => Win2K ADV
[30] => Win2K PRO
[31] => Win2K SRV
[20] => Win95
[21] => Win98
[22] => Win98SE
[23] => WinMe
[24] => WinNTsp6a
[25] => WinXP_Home
[26] => WinXP_Pro_SP1a
[27] => WinXP_Pro_SP2
[75] => environment01
[76] => environment02
[77] => environment03
[69] => dialup
[72] => http
[71] => https
[67] => https_w/o_p
[66] => https_w_p
[65] => http_w/o_p
[64] => http_w_p
[70] => http_w_p_pw
[74] => msproxy+https
[63] => NA
[73] => squidproxy+https
[68] => tcp
)

但是echo $arrPlatformSetAttributionList[1]时返回的不是空值,而是一个数组(实际上是一个空数组).
奇怪的地方是
1) 上面的情况只是出现在代码里,在同一台服务器上如果仅仅做试验的话是不会出错的
比如:
<?
$testarray = array();
$testarray[1] = "a";
$testarray[2] = "b";
print_r($testarray);
echo $testarray[0].">>";
?>
这里返回的是空值不是空数组
2) 同样的代码放在不同的服务器上时结果不同,有的是返回空值,有的是返回空数组

会不会和PHP或者MYSQL的配置及版本有关??
...全文
195 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
coolstr 2005-11-05
  • 打赏
  • 举报
回复
数组处理函数库


array
建立一个新的数组。

语法: array array(...);

返回值: 数组

函数种类: 资料处理




内容说明


返回的参数是数组类型。参数可以是带有 => 运算子的索引。array() 其实不是一个正规的函数,它主要是要用来表示数组。




使用范例


下面范例用显示如何建立一个二维数组,如何指定联合数组的键值,及如何略过和继续数组中的数字索引。

$fruits = array(
"fruits" => array("a"=>"orange","b"=>"banana","c"=>"apple"),
"numbers" => array(1, 2, 3, 4, 5, 6),
"holes" => array("first", 5 => "second", "third")
);


强哥83 2005-11-04
  • 打赏
  • 举报
回复
不同的服务器是不是也是不同的操作系统或版本

$testarray[0] 是未初始化的变量
你想输出结果
那第结果就是不确定的
有些系统对未初始化的变量置空
有些则不做处理,这种情况可能就是内存中的某个不确定值了
fnaps 2005-11-03
  • 打赏
  • 举报
回复
没发觉有这方面的问题。
uuq 2005-11-03
  • 打赏
  • 举报
回复
楼主第一个写法有错误。
那是打印后的结构
dongdong7 2005-11-03
  • 打赏
  • 举报
回复
什么也不写,解释什么呀
原装匪兵甲 2005-11-03
  • 打赏
  • 举报
回复
回复人: zalvsa(zalvsa) ( ) 信誉:100 2005-11-03 15:08:00 得分: 0
楼主种写法在我这里是错误的。。。(5。0的环境)
首先[]符号不能加,其次值没有加"";改完后看你还会不会有异常
________________________________________________________________________
那个数组不是代码,是我用print_r()打印出来的
原装匪兵甲 2005-11-03
  • 打赏
  • 举报
回复
代码改倒是好改,但是就是不明白为什么同样的代码在不同的服务器上差别就那么大呢?有个是返回空值,有的是返回空数组....
Gdj 2005-11-03
  • 打赏
  • 举报
回复
那你存进数据库和取出来时的转换语句呢?

<?
$testarray = array();
$testarray[1] = "a";
$testarray[2] = "b";
print_r($testarray);
echo $testarray[0].">>";
?>
这里返回的是空值不是空数组

这就几乎可以肯定不是版本问题了。
zalvsa 2005-11-03
  • 打赏
  • 举报
回复
楼主种写法在我这里是错误的。。。(5。0的环境)
首先[]符号不能加,其次值没有加"";改完后看你还会不会有异常
原装匪兵甲 2005-11-03
  • 打赏
  • 举报
回复
回复人: Gdj(陈水.智商只有129.非卖品) ( ) 信誉:100 2005-11-03 15:02:00 得分: 0
什么都不帖出来还要人找原因。用猜的啊?
________________________________________________________________
没什么可以贴的啊,直接从SQL取过来的结果就是那个数组,然后紧跟着echo就出问题了.
xuzuning 2005-11-03
  • 打赏
  • 举报
回复
有趣!
不过我从未发现过

可能是php版本造成的
因为你出现问题时的数组元素并不存在,可能是错误处理中的小bug。
原装匪兵甲 2005-11-03
  • 打赏
  • 举报
回复
没有同名的数组,比较奇怪的是,前面的那个数组是直接打印的刚从DB里取出的数据,没做任何处理.紧接着就echo $arrPlatformSetAttributionList[1],然后就出了个空数组了.
Gdj 2005-11-03
  • 打赏
  • 举报
回复
什么都不帖出来还要人找原因。用猜的啊?
Gdj 2005-11-03
  • 打赏
  • 举报
回复
仔细检查你赋值的语句
wjjchen 2005-11-03
  • 打赏
  • 举报
回复
是不是有同名数组
原装匪兵甲 2005-11-03
  • 打赏
  • 举报
回复
高手们来给个解释啊

21,891

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧