You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

多维数组遍历出现Undefined offset提示的技术求助

解决PHP多维数组循环时的Undefined Offset提示

嘿,这个问题我太熟了!你遇到的Undefined offset: 10提示,根源出在循环条件的写法上,咱们一步步理清楚:

问题出在哪?

你写的循环条件是:

while($i<count($result_page[$i]))

这里有两个明显的问题:

  1. 当$i增长到超过$result_page数组的最大索引时(比如你的情况是10,说明数组只有索引0-9的元素),$result_page[$i]就变成了不存在的元素,PHP自然会抛出Undefined offset的提示——因为你在访问一个不存在的数组位置。
  2. 你真正要做的是遍历$result_page里的所有元素,而不是每个子数组的长度,这个逻辑完全搞反了。

两种靠谱的解决方案

方案1:用foreach遍历(最推荐,PHP数组遍历的标准姿势)

foreach会自动帮你处理数组的索引,完全不用手动管理$i,从根源避免索引越界:

if($numrows>0) {
    foreach($result_page as $product) {
        echo "<tr>";
        echo "<td>" . $product['product_id'] . "</td>";
        echo "<td>" . $product['product_name'] . "</td>";
        echo "<td>" . $product['product_price'] . "</td>";
        echo "</tr>";
    }
}

方案2:如果坚持用while循环,先获取数组总长度

先一次性算出$result_page的总元素数,再用它作为循环的终止条件,不要每次循环都去访问可能不存在的索引:

if($numrows>0) {
    $totalProducts = count($result_page);
    $i = 0;
    while($i < $totalProducts) {
        echo "<tr>";
        echo "<td>" . $result_page[$i]['product_id'] . "</td>";
        echo "<td>" . $result_page[$i]['product_name'] . "</td>";
        echo "<td>" . $result_page[$i]['product_price'] . "</td>";
        echo "</tr>";
        $i++;
    }
}

额外提醒

以后遍历数组的时候,优先用foreach,它不仅写法简洁,还能避免很多手动管理索引带来的bug。如果必须用for/while循环,一定要先确认数组的有效范围,别让索引超出数组的实际长度~

内容的提问来源于stack exchange,提问作者Yash M. Hanj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:00:06