JavaScript ist 'streng nicht gleich' Operator (!==
) auf dem Vergleich mit undefined
tut nicht Ergebnis in false
auf null
Werte.
var createTouch = null;
isTouch = createTouch !== undefined // true
Um ein gleichwertiges Verhalten in PHP zu erreichen, können Sie überprüfen, ob der Variablenname in den Tasten des Ergebnisses der get_defined_vars()
existiert.
// just to simplify output format
const BR = '<br>' . PHP_EOL;
// set a global variable to test independence in local scope
$test = 1;
// test in local scope (what is working in global scope as well)
function test()
{
// is global variable found?
echo '$test ' . (array_key_exists('test', get_defined_vars())
? 'exists.' : 'does not exist.') . BR;
// $test does not exist.
// is local variable found?
$test = null;
echo '$test ' . (array_key_exists('test', get_defined_vars())
? 'exists.' : 'does not exist.') . BR;
// $test exists.
// try same non-null variable value as globally defined as well
$test = 1;
echo '$test ' . (array_key_exists('test', get_defined_vars())
? 'exists.' : 'does not exist.') . BR;
// $test exists.
// repeat test after variable is unset
unset($test);
echo '$test ' . (array_key_exists('test', get_defined_vars())
? 'exists.' : 'does not exist.') . BR;
// $test does not exist.
}
test();
In den meisten Fällen ist isset($variable)
geeignet. Das ist äquivalent zu array_key_exists('variable', get_defined_vars()) && null !== $variable
. Wenn Sie einfach null !== $variable
ohne Vorprüfung für das Vorhandensein verwenden, werden Sie Ihre Protokolle mit Warnungen durcheinander bringen, weil dies der Versuch ist, den Wert einer undefinierten Variablen zu lesen.
Sie können jedoch eine undefinierte Variable auf eine Referenz ohne Warnung gelten:
// write our own isset() function
function my_isset(&$var)
{
// here $var is defined
// and initialized to null if the given argument was not defined
return null === $var;
}
// passing an undefined variable by reference does not log any warning
$is_set = my_isset($undefined_variable); // $is_set is false
möglich Duplikat [PHP: "Hinweis: Nicht definierte Variable" und "Notice: Undefined index"] (http://stackoverflow.com/questions/4261133/php-notice-undefined-variable-and-notice -Undefinierter Index) – Machavity