Notice : Undefined index, tu es déjà tombée sur cette erreur ?
Pour ma part, pas mal de fois, et aujourd’hui encore, il m’arrive de tomber sur cette erreur. Je me suis d’ailleurs aperçue quelle revenait assez souvent chez les développeurs PHP.
Pourquoi cette erreur ?
Cette erreur indique que dans notre code, on souhaite faire appel à une clé d’un tableau qui n’existe pas, qui n’est pas définit.
$tableau = [];
echo $tableau['monIndex'];
Mon exemple reste assez basique pour que tu puisse comprendre d’où vient l’erreur. Mais dans la majorité des cas, l’erreur arrive souvent en plein milieu d’un traitement, d’une boucle ou d’une condition. Tu rencontrera probablement cette erreur si tu utilise les variables telle que $_POST, $_GET, $_SESSION, $_COOKIE.
Corriger l’erreur
Afin de palier à cette erreur, il faut s’assurer que la valeur que nous souhaitons récupérer existe bien.
Pour ce faire, il existe différents moyens et différentes fonctions
La fonction isset
La première façon de corriger cette erreur est de vérifier si la valeur recherchée existe (isset) dans le tableau
if(isset($tableau['monIndex'])){
echo $tableau['monIndex'];
}
else{
echo "La valeur n'existe pas";
}
Ainsi, isset, vérifie que la variable a une valeur autre que NULL et quelle est été déclarée.
Tu peux retrouver la documentation d’isset en cliquant ici
Dans notre exemple, isset va retourner false et donc passer dans la condition else
La fonction empty
La deuxième façon de vérifier est d’utiliser la fonction empty
if(!empty($tableau['monIndex'])){
echo $tableau['monIndex'];
}
else{
echo "La valeur n'existe pas";
}
La fonctionne empty va vérifier si la valeur est vide (empty). Si la valeur est vide alors la fonction retourne true. Dans notre cas, on souhaite afficher la valeur si elle n’est pas vide. C’est pour cette raison que l’on met le point d’exclamation (!) devant.
Le point d’exclamation sert de négation. Sur la première ligne, la fonction empty retourne true. Dans notre cas nous souhaitons afficher la variable dans le cas ou empty est false (négation).
Nous aurions aussi pu l’écrire de cette manière :
if(empty($tableau['monIndex'])){
echo "La valeur n'existe pas";
}
else{
echo $tableau['monIndex'];
}
Tu peux retrouver la documentation de la fonction empty en cliquant ici
Empty peut aussi être utilisé pour savoir si un tableau est vide
if(empty($tableau)){
echo "Le tableau est vide";
}
La fonction array_key_exists
La fonction array_key_exists permets de vérifier qu’une clé existe dans un tableau. A la différence des 2 précédentes fonctions qui peuvent être utilisées sur des variables qui ne sont pas des tableaux, la fonction array_key_exists, ne peux être utilisé que sur une variable de type tableau (array).
if(array_key_exists('monIndex', $tableau)){
echo $tableau['monIndex'];
}
else{
echo "La clé n'existe pas";
}
La fonction array_key_exists a besoin de 2 paramètres. Le premier est la clé recherchée, le deuxième est le tableau dans lequel rechercher.
Tu peux retrouver la documentation de la fonction array_key_exists en cliquant ici.
Tu sais désormais comment résoudre l’erreur Notice : Undefined index.
Si tu souhaites que je fasses d’autres tutoriel de ce type sur des erreurs courantes, tu peux me le demander dans les commentaires.