我正在研究一个不同的问题(即,不是本文标题中描述的问题),并在Wordpress Development Stack Exchange上发现this answer似乎有编码错误。
$thisindex = array_search($post->ID, $ids);
$previd = $ids[$thisindex-1];
$nextid = $ids[$thisindex+1];
在任何其他语言中,这肯定是一个错误,因为加1或减1可能会访问未初始化的位置。
那么,在PHP中访问未初始化的数组位置的结果是未定义的吗?而且,如果没有,那么结果应该是什么?
答案 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
的输出。