【问题标题】:php Code Array boolean returnedphp 代码数组布尔值返回
【发布时间】:2013-02-10 00:41:58
【问题描述】:

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

警告: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 '--'; 运行。所以它不应该出现那个错误?

【问题讨论】:

  • 你试过is_array(get_field('episode_sdversion'))if (get_field('episode_sdversion') !== false)吗? if (get_field('episode_sdversion') !== false &amp;&amp; in_array('Subbed', get_field('episode_sdversion'))) 之类的东西应该可以。

标签: php arrays wordpress


【解决方案1】:

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

替换第一行(如果 in_array(...))来避免错误
if(get_field('episode_sdversion) && in_array('Subbed', get_field('episode_sdversion')))

【讨论】:

    【解决方案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 '--';
    } ?>
    

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-05-10
        • 1970-01-01
        • 1970-01-01
        • 2012-12-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-08-18
        相关资源
        最近更新 更多