J'exécute un script PHP mais je reçois toujours une erreur comme celle-ci :
Avis : Variable non définie : my_variable_name dans C:wampwwwmypathindex.php à la ligne 10
Avis : Index non défini : my_index C:wampwwwmypathindex.php en ligne 11
Attention : clé de tableau non définie "my_index" dans C:wampwwwmypathindex.php à la ligne 11
Les lignes 10 et 11 ressemblent à ceci :
echo "My variable value is: " . $my_variable_name; echo "My index value is: " . $my_array["my_index"];
Que signifient ces messages d'erreur ?
Pourquoi apparaissent-ils soudainement ? J'utilise ce script depuis plusieurs années et je n'ai jamais eu de problèmes auparavant.
Comment corriger ces erreurs ?
Essayez ceci
Alternativement, il existe une solution simple et rapide :
Ce message d'erreur est destiné à aider les programmeurs PHP à détecter les fautes de frappe ou les erreurs lors de l'accès à des variables (ou éléments de tableau) inexistantes. Par conséquent, un bon programmeur doit :
Remarque/Avertissement : variable non définie
Bien que PHP ne nécessite pas de déclaration de variable, il est recommandé de la déclarer pour éviter certaines failles de sécurité ou bugs où l'on pourrait oublier d'attribuer une valeur à une variable qui sera utilisée plus tard dans le script. Lorsqu'une variable n'est pas déclarée, PHP génère une erreur de niveau E_WARNING.
Cet avertissement aide les programmeurs à repérer les noms de variables mal orthographiés ou des erreurs similaires (par exemple, l'attribution d'une valeur à une variable lorsqu'une condition est évaluée comme fausse). De plus, d'autres problèmes peuvent survenir avec les variables non initialisées. Comme indiqué dans le manuel PHP,
Cela signifie que la variable peut obtenir une valeur du fichier inclus, et cette valeur sera utilisée à la place de la valeur nulle attendue lors de l'accès à une variable non initialisée, ce qui peut conduire à des résultats imprévisibles. Pour éviter cela, c'est une bonne idée d'initialiser toutes les variables de votre fichier PHP avant de les utiliser.
Il existe plusieurs façons de résoudre ce problème :
L'approche recommandée consiste à déclarer chaque variable avant de l'utiliser. De cette façon, vous ne verrez cette erreur que si vous faites réellement une erreur et essayez d'utiliser une variable qui n'existe pas, c'est pourquoi ce message d'erreur apparaît.
Un cas particulier est celui où une variable est définie mais n'est pas visible dans la fonction. En PHP, les fonctions ont leur propre portée de variable. Si vous devez utiliser une variable externe dans une fonction, sa valeur doit être transmise en paramètre de la fonction :
Utilisez l'opérateur de coalescence nul pour supprimer les erreurs. Mais gardez à l’esprit que de cette façon, PHP ne pourra pas vous avertir que vous avez utilisé le mauvais nom de variable.
Pour les anciennes versions de PHP (< 7.0), isset() avec ternaire peut être utilisé
Veuillez noter que bien qu'il s'agisse essentiellement d'une suppression d'erreurs, elle ne fonctionne que sur des erreurs spécifiques. Par conséquent, cela peut empêcher PHP de vous aider en marquant les variables comme non initialisées.
Utilisez l'opérateur @ pour supprimer les erreurs. Il est conservé ici pour des raisons historiques, mais sérieusement, cela n'aurait jamais dû arriver.
Remarque : Il est fortement recommandé de ne mettre en œuvre que le premier point.
Remarque : index non défini/décalage non défini/avertissement : clé de tableau non définie
Cette astuce/avertissement apparaît lorsque vous (ou PHP) essayez d'accéder à un index non défini d'un tableau.
Tableau interne
Exactement la même attitude doit être adoptée lorsqu'il s'agit de tableaux internes, c'est-à-dire de tableaux définis dans votre code : initialisez toutes les clés avant utilisation. De cette façon, l’erreur est capable de faire le travail prévu : informer le programmeur d’une erreur dans le code. La démarche est donc la même :
Suggestion : Déclarez les éléments du tableau :
Le cas particulier est celui où une fonction renvoie un tableau ou une autre valeur telle que null ou false. Avant de tenter d'accéder à un élément du tableau, un test doit être fait, par exemple :
Tableau externe
Pour les tableaux externes (comme $_POST/$_GET/$_SESSION ou entrée JSON), la situation est différente car le programmeur n'a aucun contrôle sur le contenu de ces tableaux. Par conséquent, il est raisonnable de vérifier si une certaine clé existe ou même d'attribuer une valeur par défaut à une clé manquante.
Lorsqu'un script PHP contient un formulaire HTML, naturellement, il n'y aura aucun contenu de formulaire au premier chargement. Par conséquent, un tel script devrait vérifier si le formulaire a été soumis.
Certains éléments de formulaire HTML, comme les cases à cocher, ne seront pas envoyés au serveur s'ils ne sont pas sélectionnés. Dans ce cas, il est logique d’utiliser l’opérateur de fusion nul pour attribuer une valeur par défaut.
Les éléments facultatifs de chaîne de requête ou les cookies doivent être traités de la même manière.
Mais l'affectation doit être effectuée au tout début du script. Validez toutes les entrées, attribuez-les à des variables locales et utilisez-les dans tout votre code. De cette façon, chaque variable à laquelle vous accédez existera intentionnellement.