【问题标题】:Why is my ternary expression not working?为什么我的三元表达式不起作用?
【发布时间】:2010-09-05 07:56:34
【问题描述】:

我正在尝试设置一个标志来显示或隐藏页面元素,但即使表达式为假,它也始终显示。

$canMerge = ($condition1 && $condition2) ? 'true' : 'false';
...
<?php if ($canMerge) { ?>Stuff<?php } ?>

怎么了?

【问题讨论】:

    标签: php ternary-operator


    【解决方案1】:

    这被破坏了,因为 'false' 作为字符串将评估为 true 作为布尔值。

    但是,这是一个不需要的三元表达式,因为结果值是简单的真假。这将是等效的:

    $canMerge = ($condition1 && $condition2);
    

    【讨论】:

      【解决方案2】:

      “假”的值为真。您需要删除引号:

      $canMerge = ($condition1 && $condition2) ? true : false;
      

      【讨论】:

      • 这似乎是一种声誉耕种的尝试。一个无法区分字符串和布尔值的 3k-rep 用户,在他提出问题后一分钟就回答了他的问题?
      • 感谢您的 cmets Orlando 和 Ed。这是一个让我感到困惑的问题,我发布它是为了我和其他人的利益。根据常见问题解答回答您自己的问题非常好。如果已经有一段时间了,也许你应该再读一遍......
      【解决方案3】:

      在我看来这是一个合理的问题,尤其是因为 PHP 工作方式的差异。

      例如,下面的代码将输出 'its false'

      $a = '0';
      
      if($a)
      {
          echo 'its true';
      }
      else
      {
          echo 'its false';
      }
      

      【讨论】:

        【解决方案4】:
        $canMerge = ($condition1 && $condition2);
        

        然后

        if ($canMerge){
            echo "Stuff";
        }
        

        【讨论】:

        • 这并不能解释 OP 询问的实际问题。
        猜你喜欢
        • 2012-11-17
        • 1970-01-01
        • 2021-12-01
        • 1970-01-01
        • 2012-08-07
        • 1970-01-01
        • 2020-04-02
        • 1970-01-01
        相关资源
        最近更新 更多