我正在研究另一个问题(即,不是本文标题中描述的问题),在Wordpress Development Stack Exchange上发现了这个答案,它似乎有编码错误。
$thisindex = array_search($post->ID, $ids);
$previd = $ids[$thisindex-1];
$nextid = $ids[$thisindex+1];
在任何其他语言中,这肯定是一个错误,因为加或减1可能会访问未初始化的位置。
那么,访问PHP中未初始化的数组位置的结果是否未定义?如果没有,那么结果应该是什么?
PHP并没有真正的序列数组。它可能在内部使用顺序数据结构,但对程序员来说这并不重要。
在PHP中,数组是键值映射,其中键可以是整数或字符串。
如果您试图访问一个未定义的索引,PHP将抛出一个E_NOTICE "Undefined index"
。结果是CCD_ 2。
$arr = array();
$arr[] = "foo";
$arr[2] = "bar";
var_dump($arr[1]); // null + notice
您发布的代码片段不一定是错误的。如果前提条件是$post->ID
在$ids
中,那么不检查array_search
的输出是公平的。