php 代码数组布尔值返回
Posted
技术标签:
【中文标题】php 代码数组布尔值返回【英文标题】:php Code Array boolean returned 【发布时间】: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 && in_array('Subbed', get_field('episode_sdversion')))
之类的东西应该可以。
【参考方案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 函数的第二个参数传递。
【讨论】:
以上是关于php 代码数组布尔值返回的主要内容,如果未能解决你的问题,请参考以下文章
php可以返回一个布尔值吗? => 返回 $aantal == 0;