"Avis : Undefined variable&quot ;, "Notice : Undefined index&quot ;, et "Notice : Undefined offset&quot ; en utilisant PHP

J&#8217exécute un script PHP et je continue à recevoir des erreurs du type :

Notice : Undefined variable : my_variable_name in C:\wamp\www\mypath\index.php on line 10

Remarque : Undefined index : my_index C:\wamp\www\mypath\index.php on line 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"];

Quelle est la signification de ces messages d'erreur ?

Pourquoi apparaissent-ils tout d'un coup ? J'ai utilisé ce script pendant des années et je n'ai jamais eu de problème.

Comment puis-je les corriger ?


Il s'agit d'une question de référence générale à laquelle les gens peuvent faire un lien en double, au lieu de devoir expliquer le problème encore et encore. Je pense que cela est nécessaire car la plupart des réponses du monde réel sur cette question sont très spécifiques.

Discussion Meta connexe:

  • [Que faire des questions répétitives ?][1]
  • [Les "questions de référence" ont-elles un sens ?][2]

[1] : https://meta.stackexchange.com/questions/62258/what-can-be-done-about-repetitive-questions [2] : https://meta.stackexchange.com/questions/63762/do-reference-questions-make-sense

Essayez-les.

Q1 : cette remarque signifie que $varname n'est pas

défini dans la portée actuelle du script. ; Q2 : l'utilisation des conditions isset(), empty() avant l'utilisation de toute variable suspecte fonctionne bien.

// recommended solution for recent PHP versions
$user_name = $_SESSION['user_name'] ?? '';

// pre-7 PHP versions
$user_name = '';
if (!empty($_SESSION['user_name'])) {
     $user_name = $_SESSION['user_name'];
}

Ou, comme solution rapide et sale :

// not the best solution, but works
// in your php setting use, it helps hiding site wide notices
error_reporting(E_ALL ^ E_NOTICE);

Note sur les sessions :

Commentaires (2)

Généralement en raison d'une "mauvaise programmation" et de la possibilité de commettre des erreurs maintenant ou plus tard.

  1. Si c&#8217est une erreur, faites d&#8217abord une affectation correcte à la variable : $varname=0 ;
  2. Si la variable n'est vraiment définie que de temps en temps, testez-la : if (isset($varname)), avant de l'utiliser.
  3. Si c&#8217est parce que vous l&#8217avez mal orthographié, corrigez simplement cela.
  4. Peut-être même tourner les avertissements dans vos PHP-settings.
Commentaires (4)

Cela signifie que vous testez, évaluez ou imprimez une variable à laquelle vous n'avez encore rien affecté. Cela signifie soit que vous avez une faute de frappe, soit que vous devez vérifier que la variable a été initialisée à quelque chose d'abord. Vérifiez vos chemins logiques, elle peut être initialisée dans un chemin mais pas dans un autre.

Commentaires (0)