检查变量是否为空

3
我有一些用户提交的变量,我希望能像这样在我的网站的其他部分中显示:

<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业务的所有内容。
5个回答

5

如果 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()函数会在变量被设置且不为NULL时返回TRUE

empty()函数则会对以下内容返回TRUE(因此!empty()将返回FALSE):

  • ""(空字符串)
  • 0(整数0)
  • "0"(字符串0)
  • NULL
  • FALSE
  • array()(空数组)
  • var $var;(在类中声明但未赋值的变量)

我猜你的$key已经被设置为空字符串,因此这里应该使用empty()函数。


@Thomas:好的,我现在明白了。当然,如果你事先设置了$key,它就永远不会为空 ;) - Felix Kling

5
<?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
    }
?>

有简写方式吗? - a coder

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

如果$var被设置了,它将显示带有$var的段落,否则将不显示任何内容。

`<?php if( isset( $key ) ): ?><div class="pre_box">Term: </div><div class="entry"><?php echo get_post_meta($post->ID, $key, true); ?></div> <?php endif; ?>` - Thomas
无论变量是否设置,文本/变量都会被显示。 - Thomas

0
从你现在的代码来看,$key 永远不会为空,因此 pre_box 总是会被显示出来。你设置了 $key = 'term',这给它赋了一个值,所以 !empty($key) 或者 isset($key) 会一直为 true。
Casey 提出的解决方案应该可以达到你想要的结果。

-1

isset() 用于检查变量是否已设置且不为 null。如果变量存在且具有非空值,则返回 true,否则返回 false。

另一方面,empty() 用于检查变量是否具有空值。如果变量没有值或具有被视为空的值(例如 null、false、0、''、array() 或 unset()),则返回 true,否则返回 false。


1
欢迎来到 Stack Overflow。此答案已经在这里提供。如果现有答案无法回答问题,请考虑添加另一个答案。 - Your Common Sense

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接