Проверьте, является ли переменная пустой - PullRequest
1 голос
/ 18 апреля 2010

У меня есть несколько пользовательских переменных, которые я хочу отобразить в другой части моего сайта, например:

<div class="pre_box">Term: </div>
<div class="entry"><?php $key='term'; echo get_post_meta($post->ID, $key, true); ?></div>

Иногда эти переменные могут быть пустыми, и в этом случае я не хочу отображать метку для пустой переменной. В приведенном выше примере я хотел бы скрыть часть <div class="pre_box">Term: </div>. Есть ли какой-нибудь простой способ проверить, является ли переменная php, подобная приведенной выше, пустой и предотвратить отображение метки?

Обновление, вот код, использующий! Empty

<?php $key='term' ?>
<?php if( !empty( $key ) ): ?> 
<div class="pre_box">Term: </div>
<div class="entry">
<?php echo get_post_meta($post->ID, $key, true); ?>
</div> 
<?php endif; ?>

Тем не менее, это все равно отображает контент, несмотря ни на что. Я думаю, что проблема может заключаться в том, как я определяю переменную $ key. Я пытаюсь получить данные из настраиваемого поля, заданного в посте WordPress - вот что такое бизнес $ post-> ID.

Ответы [ 4 ]

3 голосов
/ 18 апреля 2010
<?php 
    $post_meta = get_post_meta($post->ID, 'term', true);
    if (!empty($post_meta)) {
?>
        <div class="pre_box">Term: </div>
        <div class="entry"><?php echo $post_meta; ?></div>
<?php
    }
?>
1 голос
/ 18 апреля 2010

Если isset() не работает, попробуйте empty() вместо:

<?php if( !empty( $key ) ): ?> 
    <div class="pre_box">Term: </div>
    <div class="entry">
         <?php echo get_post_meta($post->ID, $key, true); ?>
    </div> 
<?php endif; ?>

isset() доставит TRUE, если значение установлено и имеет значение, отличное от NULL.

empty() вместо этого доставит TRUE (следовательно, !empty() приводит к FALSE) для:

  • "" (пустая строка)
  • 0 (0 как целое число)
  • "0" (0 в виде строки)
  • NULL
  • FALSE
  • array() (пустой массив)
  • var $var; (объявленная переменная, но без значения в классе)

Я предполагаю, что ваш $key установлен, но с пустой строкой. Таким образом, empty() - путь сюда.

1 голос
/ 18 апреля 2010
<?php if( isset( $var ) ): ?><p><?php echo $var ?></p><?php endif; ?>

Если установлено значение $ var, абзац будет отображаться с $ var, в противном случае ничего не будет отображаться

0 голосов
/ 18 апреля 2010

Ну, так как ваш код выше, $ key никогда не будет пустым, поэтому всегда будет отображаться pre_box. Вы устанавливаете $key = 'term', что дает ему значение, поэтому !empty($key) или isset($key) всегда будут истинными.

Решение Кейси должно дать вам результат, к которому вы стремитесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...