Я обнаружил, что compact
- это функция, которая игнорирует неустановленные переменные, но действует на те, которые установлены на null
, поэтому, когда у вас есть большая таблица локальных символов, я думаю, вы можете получить более эффективное решение по сравнению с проверкой array_key_exists('foo', get_defined_vars())
с помощью array_key_exists('foo', compact('foo'))
:
$foo = null;
echo isset($foo) ? 'true' : 'false'; // false
echo array_key_exists('foo', compact('foo')) ? 'true' : 'false'; // true
echo isset($bar) ? 'true' : 'false'; // false
echo array_key_exists('bar', compact('bar')) ? 'true' : 'false'; // false
Обновление
Начиная с PHP 7.3 compact () выдаст уведомление о неустановленных значенияхК сожалению, эта альтернатива больше не действует.
compact () теперь выдает ошибку уровня E_NOTICE, если данная строка ссылается на неустановленную переменную.Раньше такие строки молча пропускались.