注意:未定义的偏移量:0

时间:2012-01-12 00:16:47

标签: php

我正在尝试从数组中获取值,但是当我使用$array[0]时,我会收到PHP通知'Undefined Offset:0'。但是,当我使用$array['id']时(应该与使用'0'相同,因为'id'是数组中的第一个键),我能够获得该值。我做了一个print_r,输出了:

Array ( 
     [id] => 1 
     [username] => test 
)

我不应该使用索引获取密钥吗?我相信它工作得更早,但我不知道我能做些什么让它停止工作。有什么想法吗?

2 个答案:

答案 0 :(得分:2)

$array['id'] $array[0]相同。由于术语 array ,这种混淆可能是相关的。 php的数组不是你用另一种语言称为数组的数组,它们是 maps 词典

(哦,即使它们不是,php数组,地图或字典中元素的顺序取决于实现,所以虽然你将获得$tmp = array_values($array); echo $tmp[0];的id,php允许在阵列周围洗牌。)

答案 1 :(得分:1)

不,你不应该这样做。

您可能正在考虑从mysql_fetch_array之类的内容中获取的数组,默认情况下,它允许您使用数字和字符串索引来获取列 - 但您可以这样做的原因是因为数组包含两者

您还可以使用array_values从数组中提取值,从根本上将索引转换为数字索引,但实际上它并不是一回事。