6
votes

J'affiche les valeurs d'une matrice multidimensionnelle. Les valeurs sont affichées mais je reçois un avis de décalage indéfini

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++;
    }
}
This is the notice:Notice: Undefined offset: 10 in /home/jatin/web/www.exam.com/admin/productlist.php on line 68.I am getting this notice because when the loop will be executed for the last time then $i will be incremented and it goes out of the length of the array.Each time the number of elements in the 2nd dimension changes thus I have to use count function.The notice occurs when the condition is checked for the last time, So all my elements are displayed but the notice occurs.Please give an appropriate solution.
php

9 commentaires

Dupliqué possible de PHP: "Avis: variable non définie", "Avis: index non défini" et "Avis: décalage indéfini"


Partagez votre $ résultat_page [$ I] données


Essayez ceci tandis que (isset ($ résultat_page [$ i]) && $ i


Cette question n'est pas une duplication. S'il vous plaît lisez toute ma question et répondez-y. Je sais pourquoi l'erreur se produit mais j'ai besoin de la solution.


Pouvez-vous partager quelles données sont entrées dans $ résultat_page @ yashm.hanj


Les données proviennent d'une base de données. Donc c'est toujours aléatoire


tandis que (Isset ($ résultat_page [$ i]) && $ i


Impossible de partager les données en raison de la stratégie de la société Désolé @Bhargav


Ok, mon erreur @ b.desai


5 Réponses :


1
votes

Vous pouvez vérifier si la touche Array est définie ou non alors Continuer la boucle

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>";
    }
}


0 commentaires

1
votes

Pouvez-vous essayer ci-dessous.

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>";
    }
}


1 commentaires

Eh bien, j'ai trouvé une solution moi-même qui n'est pas une bonne option, mais cela fonctionne aussi bien ............... Utilisez l'opérateur @ tel que celui-ci tandis que ($ i



4
votes

Eh bien, j'ai trouvé une solution moi-même qui n'est pas une bonne option, mais cela fonctionne aussi bien ........... Utilisez l'opérateur @ comme indiqué ci-dessous ---

pendant ($ i

Les réponses données par B.desai et Thavaamam sont meilleures options cependant.


1 commentaires

Ce n'est pas une solution, il ne supprimera que des messages d'erreur.



1
votes

Utiliser l'opérateur @ supprimera l'avis. Si seulement c'est ce que vous recherchez. Ou vous pouvez également utiliser ceci:

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


0 commentaires

2
votes

Vous pouvez également utiliser la fonction suivante pour supprimer les avertissements.

error_reporting(E_ERROR | E_PARSE);


0 commentaires