检查变量值时,PHP if语句问题

时间:2009-09-22 00:56:15

标签: php if-statement return-value

我正在尝试编写一个简单的PHP if语句来检查自定义字段是否输入了任何内容,或者是否已将其留空。

当它为空白时,意味着不向页面打印任何内容, 如果在自定义字段中设置了某些内容,那么它应该创建一个内部带有标记的li元素。

到目前为止,这是我的代码:

<ul class="externalLinks">
<? $emptycheck = get('linkname',2,1,0);

if (isset($emptycheck)){ ?>
   <li><a href="<? echo get('targethref',2,1,0); ?>"><? echo get('linkname',2,1,0);?></a></li>
<? } else { '' } ?>

<li><a href="<? echo get('PDFdownload'); ?>">Download a PDF of this project</a></li>
</ul>

本案例中的自定义字段由wordpress admin(通过flutter插件)设置。 我遇到的问题很简单,如果自定义字段留空,则为空

<li><a></a></li> 

已创建。

get('linkname',2,1,0)显然返回字段内容(此部分有效)。

非常感谢任何想法。

谢谢, Jannis

2 个答案:

答案 0 :(得分:5)

仅仅因为变量为空并不意味着它不是isset()。

您想检查它是否为empty()。

$whatever = get('whatever',2,1,0)
if (! empty($whatever)){
//output your stuff
}

要明确:isset()只会告诉您符号表中是否存在变量名称。当变量为空时,empty()将返回true。

根据文件:

  

考虑以下事项   是空的:

     
      
  • “”(空字符串)
  •   
  • 0(0为整数)
  •   
  • “0”(0作为字符串)
  •   
  • NULL
  •   
  • FALSE
  •   
  • array()(空数组)
  •   
  • var $ var; (声明的变量,但在类中没有值)
  •   

编辑:empty()有点特殊,只能在常规变量上运行。您无法使用empty()测试表达式(例如,函数的返回值)。这在手册页上清楚地记录了。

答案 1 :(得分:1)

你设置$ emptycheck,如果返回值是假的你可能需要

if ( $emptycheck ) {
} else {
}

否则它将始终评估为true。或者使用否定运算符(!)来翻转逻辑,如果是相反的话。