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

StackOverflow https://stackoverflow.com/questions/376623

Вопрос

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

isset($variable)?$variable:''

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

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

Решение

вы могли бы использовать пример 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;

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

echo @$variable;

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

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

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

$var = null;

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

error_reporting(E_ALL^E_NOTICE);

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

Создание подобной функции устранит как минимум 3 из ваших причин:

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

echoVar($arrayvar['parameter']);

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top