2013-02-24 62 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