PHP是否定义了访问顺序数组中未初始化位置的结果?

时间:2015-02-24 00:22:25

标签: php arrays

我正在研究一个不同的问题(即,不是本文标题中描述的问题),并在Wordpress Development Stack Exchange上发现this answer似乎有编码错误。

$thisindex = array_search($post->ID, $ids);
$previd = $ids[$thisindex-1];
$nextid = $ids[$thisindex+1];

在任何其他语言中,这肯定是一个错误,因为加1或减1可能会访问未初始化的位置。

那么,在PHP中访问未初始化的数组位置的结果是未定义的吗?而且,如果没有,那么结果应该是什么?

1 个答案:

答案 0 :(得分:4)

PHP并不真正拥有顺序数组。它可能在内部使用顺序数据结构,但对程序员来说这并不重要。

在PHP数组中是键值映射,其中键可以是整数或字符串。

如果您尝试访问未定义的索引,PHP将抛出E_NOTICE "Undefined index"。结果是null

$arr = array();
$arr[] = "foo";
$arr[2] = "bar";
var_dump($arr[1]); // null + notice

您发布的代码段不一定错。如果前提条件是$post->ID位于$ids,则公平未检查array_search的输出。