PHP不处理OR中的第二个条件

时间:2017-08-16 07:51:25

标签: php if-statement operators operands

我搜索了很多,除了编写更大的代码之外找不到任何解决方案。 我需要的是,只有在设置了两个$ btn_字符串中的一个时输出。

当前状态如果$btn_orange = get_field('btn_orange') equeals为true, <{1}}返回一个好的值时,( $btn_black = get_field('btn_black')未被处理。

简而言之:如果get_field('btn_black')$btn_black,则$btn_orange未设置。

这是我目前的代码:

<?php if( ( $btn_orange = get_field('btn_orange') ) || ( $btn_black = get_field('btn_black') ) ): ?>

       <div class="buttons">

        <?php if($btn_orange && ( $btn_orange_url = get_field('btn_orange_url') ) ): ?>

            <a class="btn btn-lg btn-primary" href="<?php echo $btn_orange_url; ?>"><?php echo $btn_orange; ?></a>

        <?php elseif($btn_orange): ?>

            <span class="btn btn-lg btn-primary"><?php echo $btn_orange; ?></span>

        <?php endif;?>

        <?php if($btn_black && ( $btn_black_url = get_field('btn_black_url') ) ): ?>

            <a class="btn btn-lg btn-black" href="<?php echo $btn_black_url; ?>"><?php echo $btn_black; ?></a>

        <?php elseif($btn_black): ?>

            <span class="btn btn-lg btn-black"><?php echo $btn_black; ?></span>

        <?php endif;?>

    </div>

<?php endif; ?>

现在我可以单独btn_orange$btn_black分隔if块。 但如果两个或两个中的一个设置为<div class="buttons">的值,我需要输出get_field()

我可以在第一个if语句中完成吗?

编辑:问题已解决。我不应该在$x = func($parameter)语句中添加IF之类的内容,而是首先填充字符串,如dougtesting.net所指出的那样。

5 个答案:

答案 0 :(得分:1)

条件检查您必须使用==代替=

if( ( $btn_orange == get_field('btn_orange') ) || ( $btn_black == get_field('btn_black')

答案 1 :(得分:1)

您使用single =来检查if语句而不是==

答案 2 :(得分:1)

在条件范围内分配值不是一个好主意。条件并不意味着这样做(这就是大多数其他编程语言明确禁止的原因)。

这样做:

<?php $btn_orange = get_field('btn_orange'); 
      $btn_black = get_field('btn_black');
      if ($btn_orange || $btn_black): 
 ?>
如果没有可能的方法来满足它或不满足它,那么PHP(以及大多数其他编程语言)将放弃条件评估。不这样做会浪费计算时间和资源。

还要考虑以下代码:

 if (isset($array["index"])) && $array["index"] == "something)

如果要评估两个条件,则此代码将中断,因为如果未设置索引,则访问它将引发错误。

答案 3 :(得分:1)

当$ btn_orange为true时,$ btn_black没有填充get_field('btn_black')的值,因为PHP停止计算IF语句的其余部分,因为第一部分为真。

最佳解决方案是在IF语句之前填充变量,如...

$btn_orange = get_field('btn_orange');
$btn_black = get_field('btn_black');

if($btn_orange || $btn_black) {
   etc...
}

然后两个变量都可以在if语句中使用。

答案 4 :(得分:0)

您可以在插入条件

之前通过赋值变量来尝试此操作
<?php
$btn_orange = get_field('btn_orange');
$btn_black = get_field('btn_black');
if ($btn_orange || $btn_black):
?>

<div class="buttons">

    <?php if (isset ($btn_orange) && ( $btn_orange_url = get_field('btn_orange_url') ) ): ?>

您还可以按var_dump();

重新检查回复