php
  • html
  • forms
  • 2010-04-17 2 views 1 likes 
    1

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

    <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, подобная приведенной выше, пустой и предотвращает отображение метки?

    Update, вот код, использующий! Пустой

    <?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.

    ответ

    3
    <?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 
        } 
    ?> 
    
    +0

    Есть ли короткая рука для этого? –

    1
    <?php if(isset($var)): ?><p><?php echo $var ?></p><?php endif; ?> 
    

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

    +0

    '

    Term:
    ID, $key, true); ?>
    ' – Thomas

    +0

    Отображается текст/переменная независимо от того, установлена ​​ли переменная. – Thomas

    1

    Если 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() - это путь сюда.

    +0

    Я только что обновил свое оригинальное сообщение. – Thomas

    +0

    @ Томас: Хорошо, я вижу сейчас. Конечно, если вы установите '$ key' заранее, он никогда не будет пустым;) –

    0

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

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

    Смежные вопросы