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);