PHP: печать неопределенных переменных без предупреждения

Мне просто интересно, isset ($ variable)? $ Variable: '' есть быстрый способ переменные переменной $ variable undefined без предупреждения? (Я могу изменить уровень отчетности об ошибках, но я не хочу этого делать.) Самое маленькое, что я до сих пор:

$arrayvar['parameter']

Мне это не нравится по нескольким причинам:

  • Это немного «многословный» и сложный
  • function ifsetor(&$variable, $default = null) { if (isset($variable)) { $tmp = $variable; } else { $tmp = $default; } return $tmp; } повторяется
  • Отзвук пустой строки всегда меня раздражает.
  • Мои имена переменных, вероятно, будут длиннее, например echo ifsetor($variable); echo ifsetor($variable, 'default');

php,variables,warnings,undefined,

3

Ответов: 6


9 принят

вы можете использовать пример ifsetor (), взятый здесь :

echo @$variable;

например:

echo @$variable;

Это не генерирует уведомление, потому что переменная передается по ссылке.


12 ов

Вы можете запустить его с помощью оператора подавления ошибок @.

isset_or()

Однако лучше не игнорировать неустановленные переменные. Unset variables может указывать на логическую ошибку в скрипте, и лучше всего обеспечить, чтобы все переменные были установлены перед использованием.


3
echo

1

Это давняя проблема с PHP , они намереваются исправить ее с помощью if(или аналогичной функции) в PHP 6, надеюсь, эта функция также превратится в PHP 5.3. На данный момент вы должны использовать пример isset () / trernary в своем вопросе или использовать префикс @, чтобы отключить эту ошибку. IMHO, это единственное обстоятельство, которое оправдывает использование @ в PHP.

Я бы не стал беспокоиться о проблемах с частотой, используя echoпустую строку, вероятно, более дорого обернуть ее в ifпредложение, чем просто отбросить пустую строку.


0

неопределенные переменные очень распространены, я предлагаю вам сначала инициализировать переменную с нулем

$var = null;

или отключить отчет об ошибках для уведомлений:

error_reporting(E_ALL^E_NOTICE);
PHP, переменные, предупреждения, не определено,
Похожие вопросы