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

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

isset($variable)?$variable:''

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

  • Это немного «многословный» и сложный
  • $variable повторяется
  • Отзвук пустой строки всегда меня раздражает.
  • Мои имена переменных, вероятно, будут длиннее, например $arrayvar['parameter']

Solutions Collecting From Web of "PHP: печать неопределенных переменных без предупреждения"

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

 function ifsetor(&$variable, $default = null) { if (isset($variable)) { $tmp = $variable; } else { $tmp = $default; } return $tmp; } 

например:

 echo ifsetor($variable); echo ifsetor($variable, 'default'); 

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

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

 echo @$variable; 

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

 echo @$variable; 

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

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

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

 $var = null; 

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

 error_reporting(E_ALL^E_NOTICE); 

Подавление ошибок с помощью @ -оператора заставляет интерпретатор изменять уровень ошибок, выполнять функцию, а затем изменять уровень ошибок. Это уменьшает время выполнения скриптов.

Построение такой функции позволит устранить по крайней мере 3 из ваших причин:

 function echoVar($var, $ret=NULL) { return isset($var)?$var:$ret; } echoVar($arrayvar['parameter']); 

Но почему повторять неопределенные переменные? Это звучит не очень хорошо …