3

So I'm using a checkbox field, and I check it's value by using the code below and print things out accordingly. Anyway, if the field's checkboxes don't have any value, meaning all of them are unchecked, I get an error.

Warning: in_array() expects parameter 2 to be array, boolean given in /filepath.php on line 647

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

So basically, what can I do with this code to make it so when all values are unchecked, that would automatically mean that "Subbed" value is also unchecked, so it should simply just show echo '--';. So how can I make this echo '--'; run when all values are unchecked. So it shouldn't come up with that error?

4

3 回答 3

2

我不确定你的get_field()函数做了什么,大概它是框架的一部分或其他东西,但我猜它会返回 的值$_REQUEST['episode_sdversion'],这将是FALSE复选框为空的时候。

在这种情况下,如果我正确理解了您的问题,则首先进行简单检查以查看是否get_field()返回了其他内容FALSE就足够了:

<?php if (get_field('episode_sdversion') && in_array('Subbed', get_field('episode_sdversion'))) { ?>
        <a href="<?php echo $episode_permalink; ?>#subbed">Subbed</a>
<?php } else { 
        echo '--';
} ?>
于 2013-02-24T22:31:30.097 回答
2

您收到错误是因为 get_field 在未选中任何框时返回 false 而不是数组。&& 运算符是短路的,这意味着如果第一部分被评估为假,第二部分将不会被执行。因此,您可以通过将第一行(如果 in_array(...))替换为

if(get_field('episode_sdversion) && in_array('Subbed', get_field('episode_sdversion')))
于 2013-02-24T22:36:29.667 回答
1

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

于 2013-02-24T22:25:26.533 回答