2013-02-24 80 views
3

所以我使用复选框字段,并使用下面的代码检查它的值并相应地打印出来。无论如何,如果该字段的复选框没有任何价值,意味着所有这些都未选中,我会收到错误消息。php代码布尔值返回

警告:in_array()预计参数2是数组,布尔在/filepath.php给出线647

<?php if (in_array('Subbed', get_field('episode_sdversion'))) { ?> 
      <a href="<?php echo $episode_permalink; ?>#subbed">Subbed</a> 
    <?php } else { 
      echo '--'; 
    } ?> 

所以基本上,我能使用此代码让它做所以当所有的值都没有选中时,这将自动表示“Subbed”值也未被选中,所以它应该只显示echo '--';。那么我怎样才能让这个echo '--';运行时,所有的值都没有选中。所以它不应该出现这个错误?

+3

你试过'is_array(get_field( 'episode_sdversion'))'或'如果(get_field( 'episode_sdversion' 避免错误)!== false)'?就像'if(get_field('episode_sdversion')!== false && in_array('Subbed',get_field('episode_sdversion')))'应该做的。 – Eggplant 2013-02-24 22:25:39

回答

2

我不知道你的get_field()的功能是什么,想必它的框架或东西的一部分,但我猜它返回的$_REQUEST['episode_sdversion']值,这将是FALSE当复选框是空的。

在这种情况下,如果我正确地理解你的问题,一个简单的检查,首先看是否get_field()将返回其他的东西比FALSE就足够了:

​​
+0

非常感谢:) – Maaz 2013-02-25 16:37:24

1

您必须更改该代码或get_field返回值。一种方法是,在所有情况下声明一个array(),然后添加每个已发布的复选框,以便始终将一个数组作为in_array函数的第二个参数传递。

2

你所得到的错误,因为get_field返回false,而不是没有框被选中时的数组。运算符是短路的,这意味着如果第一部分被评估为false,则第二部分不会被执行。所以,你可以通过更换您的第一行(如果in_array(...))与

if(get_field('episode_sdversion) && in_array('Subbed', get_field('episode_sdversion'))) 
+0

非常感谢:) – Maaz 2013-02-25 16:37:49