JavaScript на «строго не дорівнює» оператор ( !==) в порівнянні з undefinedзовсім НЕ призводить до falseпо nullзначенням.
var createTouch = null;
isTouch = createTouch !== undefined
Щоб досягти еквівалентної поведінки в PHP, ви можете перевірити, чи існує ім'я змінної в ключах результату get_defined_vars().
const BR = '<br>' . PHP_EOL;
$test = 1;
function test()
{
echo '$test ' . ( array_key_exists('test', get_defined_vars())
? 'exists.' : 'does not exist.' ) . BR;
$test = null;
echo '$test ' . ( array_key_exists('test', get_defined_vars())
? 'exists.' : 'does not exist.' ) . BR;
$test = 1;
echo '$test ' . ( array_key_exists('test', get_defined_vars())
? 'exists.' : 'does not exist.' ) . BR;
unset($test);
echo '$test ' . ( array_key_exists('test', get_defined_vars())
? 'exists.' : 'does not exist.') . BR;
}
test();
У більшості випадків isset($variable)це доречно. Це еквівалентно array_key_exists('variable', get_defined_vars()) && null !== $variable. Якщо ви просто використовуєте null !== $variableбез попередньої перевірки існування, ви зіпсуєте свої журнали з попередженнями, оскільки це спроба прочитати значення невизначеної змінної.
Однак ви можете застосувати невизначену змінну до посилання без будь-якого попередження:
function my_isset(&$var)
{
return null === $var;
}
$is_set = my_isset($undefined_variable);