我正在显示多维数组的值。正在显示这些值,但我收到未定义偏移的通知

时间:2018-04-19 10:54:34

标签: php

if($numrows>0)
{
    $i=0;
    while($i<count($result_page[$i]))         //This is line 68
    {
        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>";
        $i++;
    }
}

这是通知:

注意:未定义的偏移量:第68行/home/jatin/web/www.exam.com/admin/productlist.php中的10。

我收到了这个通知,因为当循环最后一次执行时,$ i将会增加并超出数组的长度。

每次第二维中的元素数量发生变化时,我都必须使用计数功能。

上次检查条件时会发出通知,因此会显示所有元素,但会发出通知。

请提供适当的解决方案。

5 个答案:

答案 0 :(得分:2)

您还可以使用以下功能禁止显示警告。

error_reporting(E_ERROR | E_PARSE);

答案 1 :(得分:1)

您可以检查是否设置了数组键,然后继续循环

if($numrows>0)
{
    $i=0;
    while(isset($result_page[$i]) && $i<count($result_page[$i])         //This is line 68
    {
        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>";
    }
}

答案 2 :(得分:1)

你可以尝试下面一个。

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

答案 3 :(得分:1)

我自己找到了一个解决方案,这也不是一个好的选择,但它也可以正常工作...........使用下面给出的@运算符---

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

B.Desai和thavaamm给出的答案虽然是更好的选择。

答案 4 :(得分:1)

使用@运算符将取消该通知。如果仅是您要寻找的。 或者,您也可以使用以下方法:

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