Мне просто интересно, есть ли быстрый способ повторить неопределенные переменные без предупреждения? (Я могу изменить уровень отчетности об ошибках, но я не хочу этого делать.) Самое маленькое, что я до сих пор:
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;
Однако лучше не игнорировать неустановленные переменные. 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']);
Но почему повторять неопределенные переменные? Это звучит не очень хорошо …