示例一(不起作用):
<?php
$classes = get_body_class();
if (!in_array('some-class',$classes) || $secondCondition === false) { ?>
<div> Some Content </div>
<?php } ?>
示例二(工作???)
<?php
$classes = get_body_class();
if (!in_array('some-class',$classes)) { ?>
<?php if ($secondCondition === false) { ?>
<div> Some Content </div>
<?php } ?>
<?php } ?>
不确定为什么第一个代码不起作用,即使满足条件!in_array
或$secondCondition === false
,但是当我将一个条件包装在另一个条件中时它是否有效?
*请注意$secondCondition
是先前定义的,所以我没有把这部分代码放在一起,因为它工作正常。
答案 0 :(得分:1)
如果我说得对,你想展示一些内容,如果某类不在数组中$classes
且$secondCondition
是false
您的问题是您的两个示例处理不同的条件,如果您使用OR
运算符||
只有一个必须为true
所以我猜您正在寻找AND
运算符&&
请改为尝试:
<?php
$classes = get_body_class();
if (!in_array('some-class',$classes) && $secondCondition === false) : ?>
<div> Some Content </div>
<?php endif; ?>
使用代码的工作示例。我初始化变量$classes
和$secondCondition
进行测试,稍微玩一下并查看差异
工作示例:
$classes = array( "other-class" );
$secondCondition = false;
if ( !in_array( 'some-class', $classes ) && $secondCondition === false ) : ?>
<div> Some Content A</div>
<?php endif;
// in this condition only one has to be true either it is not in array or $secondCondition = false
if ( !in_array( 'some-class', $classes ) || $secondCondition === false ) : ?>
<div> Some Content B</div>
<?php endif;
// in this example BOTH conditions have to be true, first: not in array, second: $secondCondition = false
if ( !in_array( 'some-class', $classes ) ) {
if ( $secondCondition === false ) { ?>
<div> Some Content C</div>
<?php }
}
答案 1 :(得分:0)
你的两个代码不相同。
第二个检查您的值是否在数组中,然后检查$secondCondition
是否为false。
如果两个条件均为真,则会打印<div>
。
因此,此条件的等效代码不是
(!in_array('some-class',$classes) || $secondCondition === false)
但
(!in_array('some-class',$classes) && $secondCondition === false)
答案 2 :(得分:0)
您应该使用更多的括号和更少的标签
<?php
$classes = get_body_class();
if ((!in_array('some-class',$classes)) || ($secondCondition === false)) {
echo "<div> Some Content </div>";
}
?>