Notice : Undefined variable en PHP

Ce message d’erreur vise à aider les développeurs PHP à repérer une faute de frappe ou une erreur lors de l’accès à une variable (ou à un élément de tableau) qui n’existe pas. Ainsi, un bon programmeur :

  1. Veille à ce que chaque variable ou clé de tableau soit déjà définie au moment où elle est utilisée. Si une variable doit être utilisée à l’intérieur d’une fonction, elle doit être transmise à cette fonction en tant que paramètre.

  2. Fais attention à cette erreur et procède à sa correction, tout comme pour toute autre erreur. Cela peut indiquer une faute d’orthographe ou que certaines procédures n’ont pas renvoyé les données attendues.

  3. Seulement dans de rares cas, lorsque les choses ne sont pas sous le contrôle du développeur, un code peut être ajouté pour contourner cette erreur. Mais en aucun cas cela ne devrait être une habitude.


PHP ne nécessite pas de déclaration de variable, cependant il est recommandé de le faire afin d’éviter certaines vulnérabilités de sécurité ou des bugs où l’on pourrait oublier de donner une valeur à une variable qui sera utilisée plus tard dans le script. En cas de variables non déclarées, PHP émet une erreur de niveau E_WARNING.

Cet avertissement aide les développeurs à repérer un nom de variable mal orthographié ou un type d’erreur similaire (comme une variable à laquelle une valeur a été attribuée à l’intérieur d’une condition qui s’est évaluée à false). De plus, il peut y avoir d’autres problèmes possibles avec des variables non initialisées.

Il est préférable d’initialiser toutes les variables dans un fichier PHP avant de les utiliser.

Solution recommandée : Déclarez chaque variable avant de l’utiliser.

De cette manière, vous ne verrez cette erreur que lorsque vous ferez effectivement une erreur, en essayant d’utiliser une variable qui n’existe pas – c’est précisément la raison de ce message d’erreur.

// Initialisation d'une variable
$valeur = ""; // Valeur d'initialisation ; 0 pour un entier, [] pour un tableau, etc.
echo $valeur; // pas d'erreur
echo $valuer; // une erreur indique un nom de variable mal orthographié

Un cas particulier survient lorsque une variable est définie mais n’est pas visible dans une fonction. Les fonctions en PHP ont leur propre portée de variable, et si vous avez besoin d’utiliser dans une fonction une variable venant de l’extérieur, sa valeur doit être transmise en tant que paramètre de la fonction :

function test($param) {
return $param + 1;
}
$var = 0;
echo test($var); // maintenant la valeur de $var est accessible à l'intérieur via $param

Autre solution : Supprimez l’erreur avec l’opérateur de coalescence null.

Mais rappelez-vous que de cette manière, PHP ne pourra pas vous avertir en cas d’utilisation d’un mauvais nom de variable.

// L'opérateur de coalescence null
echo $valeur ?? '';

Pour les anciennes versions de PHP (< 7.0), isset() avec un ternaire peut être utilisé.

 echo isset($value) ? $value : '';

Sachez cependant que c’est essentiellement une suppression d’erreur, mais pour une seule erreur particulière. Cela peut donc empêcher PHP de vous aider en signalant une variable non initialisée.

Supprimez l’erreur avec l’opérateur @.

Laissé ici pour des raisons historiques mais cela ne devrait tout simplement pas être utilisé.

Vous souhaitez faire appel à un développeur web ?

Les derniers articles de nos développeurs web