Comment résoudre l'erreur PHP Notice: Undefined variable ?

Réponses rédigées par Antoine
Dernière mise à jour : 2018-11-22 21:24:50
Thèmes : php
Question

J'exécute un script PHP et continue de recevoir des erreurs du type :

Notice: Undefined variable: ma_variable in chemin_accès/fichier.php on line XX

Quelles méthodes faut-il utiliser pour résoudre les erreurs PHP Notice: Undefined variable ?

Réponse

Bien que PHP ne nécessite pas de déclaration de variable, il est recommandé de le faire afin d'éviter certaines failles de sécurité, ou des bogues qui empêcheraient d'attribuer une valeur à une variable.

Ce que PHP fait dans le cas de variables non déclarées, c’est d'envoyer une erreur de très bas niveau, E_NOTICE, qui d'ailleurs n’est même pas signalée par défaut, mais que le manuel recommande d’autoriser pendant le développement.

La solution la plus recommandée pour résoudre l'erreur PHP Notice: Undefined variable est de déclarer vos variables.

  • Utilisez des "" (guillemets) quand vous voulez ajouter du contenu alphanumérique, ultérieurement à la variable.

exemple

$variable = ""; 
  • Utilisez un 0 (zéro) quand vous voulez ajouter du contenu numérique, ultérieurement à la variable.

exemple

$variable = 0;

Lorsque vous faites appel à une variable non définie, utilisez isset() ou !empty() avant de l'utiliser :

exemple isset()

$variable = isset($_POST['valeur']) ? $_POST['valeur'] : '';

exemple empty()

$variable = !empty($_POST['valeur']) ? $_POST['valeur'] : '';

Depuis PHP7 vous pouvez utiliser l'opérateur Null coalescent, vous n'aurez alors plus vraiment besoin de déclarer vos variables :

$variable = $_POST['valeur'] ?? '';

Ce qui fonctionne également pour résoudre l'erreur PHP Notice: Undefined variable, mais qui n'est pas recommandé :

  • Désactiver E_NOTICE avec error_reporting(~E_NOTICE).
  • Supprimer l'erreur avec l'opérateur @ devant la variable.