PHP: печать неопределенных переменных без предупреждения - PullRequest
3 голосов
/ 18 декабря 2008

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

isset($variable)?$variable:''

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

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

Ответы [ 6 ]

13 голосов
/ 18 декабря 2008

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

echo @$variable;

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

9 голосов
/ 18 декабря 2008

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

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

например:

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

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

3 голосов
/ 18 декабря 2008
echo @$variable;
1 голос
/ 19 декабря 2008

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

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

0 голосов
/ 18 июля 2012

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

$var = null;

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

error_reporting(E_ALL^E_NOTICE);
0 голосов
/ 19 декабря 2008

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

Создайте такую ​​функцию, чтобы устранить по крайней мере 3 причины:

function echoVar($var, $ret=NULL) {
    return isset($var)?$var:$ret;
}

echoVar($arrayvar['parameter']);

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

...