PHP中访问数组下一个元素遇Undefined offset报错的解决方法
问题原因
错误Undefined offset: 4是因为你的数组仅有4个元素,索引范围为0-3。当循环执行到$i=3时,$i+1=4,而数组不存在索引4的元素,因此触发了未定义偏移量的错误。你的循环条件$i < count($array)会让$i取到0、1、2、3四个值,最后一次循环必然越界。
解决方案
调整循环的终止条件,让$i的最大值为count($array)-2,这样$i+1始终不会超出数组的最大索引count($array)-1。另外你的if和else分支逻辑完全一致,可以直接合并简化:
修正后的代码
$array = ["B", "C", "D", "A"]; $sequence_arr = []; // 循环到倒数第二个元素,确保$i+1存在 for($i=0; $i < count($array)-1; $i++) { $sequence_arr[] = $array[$i] . $array[$i+1]; } print_r($sequence_arr);
运行结果
生成的数组如下:
Array ( [0] => BC [1] => CD [2] => DA )
可选写法(避免手动计算索引)
如果不想手动处理终止条件,也可以用数组指针结合循环实现:
$array = ["B", "C", "D", "A"]; $sequence_arr = []; $prev = reset($array); while ($current = next($array)) { $sequence_arr[] = $prev . $current; $prev = $current; } print_r($sequence_arr);
这种写法会自动遍历到倒数第二个元素,从根源避免索引越界问题。
内容的提问来源于stack exchange,提问作者user3653474
相关产品推荐
相关产品推荐

