Ik draai een PHP script en blijf fouten krijgen zoals:
Notice: ongedefinieerde variabele: my_variable_name in C:³³³'index.php op regel 10
Opmerking: Ongedefinieerde index: my_index in C:\wamp-wwww\mypath.php op regel 11
Lijn 10 en 11 zien er zo uit:
echo "My variable value is: " . $my_variable_name;
echo "My index value is: " . $my_array["my_index"];
Wat is de betekenis van deze foutmeldingen?
Waarom verschijnen ze plotseling? Ik heb dit script jaren gebruikt en ik heb nooit problemen gehad.
Hoe los ik ze op?
Dit is een Algemene Referentievraag voor mensen om naar te linken als duplicaat, in plaats van het probleem steeds opnieuw te moeten uitleggen. Ik voel dat dit nodig is omdat de meeste real-world antwoorden op deze kwestie zeer specifiek zijn.
Gerelateerde Meta discussie:
Probeer deze.
V1: Deze mededeling betekent dat $varname niet gedefinieerd in het huidige bereik van het script.
Q2: Gebruik van isset(), empty() condities voordat een verdachte variabele wordt gebruikt werkt goed.
// 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'];
}
Of, als een snelle en vuile oplossing:
// not the best solution, but works
// in your php setting use, it helps hiding site wide notices
error_reporting(E_ALL ^ E_NOTICE);
Opmerking over de sessies:
Bij het gebruik van sessies is session_start();
verplicht om in alle bestanden te staan die sessies gebruiken.
Over het algemeen vanwege "slechte programmering" en een mogelijkheid voor fouten nu of later.
if (isset($varname))
, voordat je het gebruiktHet betekent dat je een variabele aan het testen, evalueren of afdrukken bent, waaraan je nog niets hebt toegekend. Het betekent dat je of een typefout hebt, of dat je eerst moet controleren of de variabele wel ergens op geïnitialiseerd is. Controleer je logische paden, het kan ingesteld zijn in één pad maar niet in een ander.