Как определить переменные для полей без данных в них?

#php #wordpress #runtime-error #call

#php #wordpress #ошибка во время выполнения #вызов

Вопрос:

У меня есть несколько обращений к данным на сайте WordPress с использованием нескольких пользовательских полей. Поля не обязательно заполнять на серверной части. Итак, в моих шаблонах у меня есть вызовы, подобные этому:

 <?php if( $additional_fields[ 'Time' ] ) { echo 'Duration: ' . $additional_fields[ 'Time' ] . '<br>'; } ?>
  

Теперь это действительно работает. И это здорово. Но если я включу WP Debug, а данных для этого поля нет, меня приветствует следующее:

Обратите внимание: неопределенный индекс: Время в /home/hellod8/public_html/wp-content/themes/my-theme/page-data.php в строке 63

Теперь опять же, не критически важно. Если я отключу отладку, проблема исчезнет. Тем не менее, я все еще хотел бы решить эту проблему.

Я думал, что смогу сделать это выше вызова функции:

 <?php $additional_fields[ 'Time' ] = ''; ?>
  

Но все, что это делает, это вообще ничего не отображает для этого поля.

Итак, что бы сработало для устранения ошибки?

Комментарии:

1. Проверьте с помощью функции php, isset присутствует ли «time» в вашем массиве.

2. if( isset($additional_fields['Time'])) {.. или if(!empty($additional_fields['Time'])) {.. — Первый проверяет, есть ли поле с именем ‘Time’, второй дополнительно проверяет, есть ли внутри значение (отличное от «).

Ответ №1:

Вы используете isset() , чтобы определить, установлена ли переменная. Пример:

 if( isset($additional_fields['Time']) ){
    echo $additional_fields['Time'];
}
  

Если вы хотите проверить, установлена ли переменная, а не пуста, вы можете использовать empty() . Пример:

 if( !empty($additional_fields['Time']) ){
    echo $additional_fields['Time'];
}
  

empty() проверит множество вещей, таких как, является ли переменная isset или значение blank , zero false или null . empty() работает немного медленнее, чем isset() (в основном из-за этих дополнительных проверок).

Пустой — это то же самое, что сказать:

 if( isset($additional_fields['Time']) amp;amp; $additional_fields['Time'] ){
    echo $additional_fields['Time'];
}
  

isset() http://php.net/manual/en/function.isset.php

empty() http://php.net/manual/en/function.empty.php