Utilisation de PHP "Attention : variable non définie", "Attention : index non défini", "Attention : clé de tableau non définie" et "Attention : décalage non défini"
P粉851401475
2023-08-23 11:45:50
<p>J'exécute un script PHP et je continue de recevoir des erreurs comme celle-ci : </p>
<blockquote>
<p>Remarque : Variable non définie : my_variable_name dans C:wampwwwmypathindex.php à la ligne 10</p>
<p>Remarque : Index non défini : my_index C:wampwwwmypathindex.php ligne 11</p>
<p>Attention : la clé de tableau 'my_index' n'est pas définie dans C:wampwwwmypathindex.php à la ligne 11</p>
</blockquote>
<p>Les lignes 10 et 11 ressemblent à ceci : </p>
<pre class="brush:php;toolbar:false;">echo "Ma valeur de variable est : " $my_variable_name;
echo "Ma valeur d'index est : " $my_array["my_index"];</pre>
<p>Que signifient ces messages d’erreur ? </p>
<p>Pourquoi apparaissent-ils soudainement ? J'utilise ce script depuis des années et je n'ai jamais eu de problèmes. </p>
<p>Comment les réparer ? </p>
<heure />
<blockquote>
<p><sub><strong>Il s'agit d'une question de référence générale</strong> afin que les utilisateurs puissent accéder à des questions en double sans avoir à expliquer la question encore et encore. Je pense que cela est nécessaire car la plupart des réponses concrètes à cette question sont très spécifiques. </sub></p>
<p><sub>Méta-discussion connexe :</sub></p>
<ul>
<li><sub>Que dois-je faire en cas de questions en double ? </sub></li>
<li><sub>La « question de référence » a-t-elle un sens ? </sub></li>
</ul>
</blockquote><p><br /></p>
Essayez-les
Ou, comme solution rapide et sale :
Remarques sur les séances :
Lorsque vous utilisez des sessions, vous devez placer
session_start();
dans tous les fichiers qui utilisent des sessions.http://php.net/manual/en/features.sessions .php
Ce message d'erreur est destiné à aider les programmeurs PHP à trouver des fautes de frappe ou des erreurs lors de l'accès à une variable (ou un élément de tableau) qui n'existe pas. Alors un bon programmeur :
Notification/Avertissement : variable non définie
Bien que PHP ne nécessite pas de déclaration de variable, il le recommande pour éviter certaines failles de sécurité ou bugs où les gens oublient d'attribuer une valeur à une variable qui est utilisée plus tard dans le script. PHP émet une erreur de niveau
E_WARNING
lorsqu'une variable n'est pas déclarée.Cet avertissement aide les programmeurs à repérer les noms de variables mal orthographiés ou des types d'erreurs similaires (comme l'attribution d'une valeur à une variable dans une condition qui est évaluée à false ). De plus, d'autres problèmes peuvent survenir avec les variables non initialisées. Comme indiqué dans le manuel PHP ,
Cela signifie qu'une variable peut obtenir une valeur à partir d'un fichier inclus, et cette valeur sera utilisée à la place du
null
attendu pour accéder à une variable non initialisée, ce qui peut conduire à des résultats imprévisibles. Pour éviter cela, il est préférable d'initialiser toutes les variables des fichiers PHP avant utilisation.Méthodes pour gérer les problèmes :
Recommandation : Déclarez chaque variable avant de l'utiliser. De cette façon, vous ne verrez cette erreur que si vous faites l'erreur d'essayer d'utiliser une variable qui n'existe pas - c'est exactement pourquoi ce message d'erreur existe.
Cas particulier où la variable est définie mais non visible dans la fonction. Les fonctions en PHP ont leur propre portée de variable, si vous devez utiliser une variable externe dans une fonction, sa valeur doit être passée en paramètre de la fonction :
Supprimez les erreurs à l’aide de l’opérateur de coalescence nul. Mais rappelez-vous, de cette façon, PHP ne pourra pas vous avertir que vous avez utilisé un mauvais nom de variable.
Pour les anciennes versions de PHP (
Veuillez noter qu'il s'agit toujours essentiellement d'une suppression d'erreur, mais uniquement pour une erreur spécifique. Par conséquent, cela peut empêcher PHP de vous aider en marquant des variables uniformes.
Utilisez le @operator pour supprimer les erreurs. Partir d'ici pour des raisons historiques, mais sérieusement, cela ne devrait pas arriver.
Remarque : Fortement recommandé de mettre en œuvre uniquement le point 1.
Remarque : index non défini/décalage non défini/avertissement : clé de tableau non définie
Cet avis/avertissement se produit lorsque vous (ou PHP) essayez d'accéder à un index non défini d'un tableau.
Tableau interne
L'attitude doit être exactement la même lorsqu'il s'agit de tableaux internes définis dans le code : il suffit d'initialiser toutes les clés avant utilisation. De cette façon, le bug fera son travail prévu : informer les programmeurs des erreurs dans leur code. La méthode est donc la même :
Recommandé : Déclarez les éléments de votre tableau :
Un cas particulier est lorsque certaines fonctions renvoient des tableaux ou d'autres valeurs (par exemple
null
或false
). Ensuite, vous devez effectuer un test avant de tenter d'accéder aux éléments du tableau, commeTableau externe
Pour les tableaux externes (tels que
$_POST
/$_GET
/$_SESSION
ou entrée JSON), la situation est un peu différente, car le programmeur n'a aucun contrôle sur le contenu de ces tableaux. Il est donc raisonnable de vérifier si certaines clés existent ou même d’attribuer des valeurs par défaut aux clés manquantes.Lorsqu'un script PHP contient un formulaire HTML, il est naturel qu'il n'y ait aucun contenu de formulaire lors de son premier chargement. Un tel script devrait donc vérifier si le formulaire a été soumis
Certains éléments de formulaire HTML (tels que les cases à cocher) ne seront pas envoyés au serveur s'ils ne sont pas cochés. Dans ce cas, il y a une raison d'utiliser l'opérateur de coalescence nul pour attribuer une valeur par défaut
Les éléments facultatifs QUERY STRING ou les cookies doivent être traités de la même manière
Mais le devoir doit être fait au tout début du script. Validez toutes les entrées, attribuez-les à des variables locales et utilisez-les dans tout votre code. Par conséquent, chaque variable à laquelle vous accédez existera volontairement.
Connexe :