isset或!为确定Wordpress数组是否包含内容?

时间:2015-11-05 20:43:56

标签: php arrays wordpress

我正在使用ACF Gallery plugin生成一系列图像数据的Wordpress。

它被称为:

$floorplans = get_field('floorplans');

我的问题是,有时,阵列没有任何适当的内容,例如,如果我var_dump()它并且他们没有上传任何内容,我得到:

string(0) ""

如果$floorplans中存储的结果为空,我希望脚本跳过某些语句。

我试过了:

if(!empty(get_field('floorplans'))){
...
}

...但我的if中的陈述仍然存在。

我试过了:

if(isset(get_field('floorplans'))){
    ...
}

我得到了:

  

致命错误:无法对函数调用的结果使用isset()

然后我尝试了:

$floorplanCount = count(get_field('floorplans'));
if ($floorplanCount !== 0){
...
}

你猜对了,if中的陈述仍然过去了。

那么,如果floorplans字段中没有任何内容,我怎么能不运行一段代码?

2 个答案:

答案 0 :(得分:2)

正如评论中所提到的get_field是罪魁祸首,也是函数不应该返回多种数据类型(数组或字符串,数组或int等)的一个光辉的例子,因为它会强制调用复杂性代码必须弄清楚返回的内容。

试试这个:

if (((true === is_array($floorplans)) && (count($floorplans) > 0)) || (false === empty($floorplans))) {

    // Do work
}

答案 1 :(得分:1)

根据acf gallery文档,您可以使用

          if($floorplans)
             {
               //your statements goes here
           }

这是链接。 http://www.advancedcustomfields.com/resources/gallery/

你不能使用isset的原因是,如果存在任何东西,get_field函数返回数组,否则它将返回false或0(我不确定,但即使它是0或false,$ floorplan变量应该无缝地工作在我上面提到的if语句中)

以下是更多文档:http://www.advancedcustomfields.com/resources/get_field/