【问题标题】:PHP AND OR Condition with if elsePHP AND OR 条件与 if else
【发布时间】:2015-10-01 10:01:06
【问题描述】:

我有一个困惑,这里有什么问题?如果设置了 A & B 或 C,则应打印 yes,否则应打印错误消息

$a = 1;
$b = 2;
$c = null;

if ((is_null($a) && is_null($b)) || is_null($c)) {
    echo 'A and B or C cannot be blank.';
}
else
    echo 'yes';

这里我分配了 A 和 B,但它的打印仍然是“A 和 B 或 C 不能为空白。”

为了更清楚。 A=名字,B=姓氏,C=电子邮件。因此用户应提供名字和姓氏,否则发送电子邮件。

【问题讨论】:

  • 目前的逻辑是:如果$a AND $b 为NULL,或者如果$c 为NULL,则输入。它正在做它应该做的事情。
  • @Epodax 但在我的 acse 中 $a AND $b 设置为 1 和 2。它们不为空。
  • 读取/检查整个 if 子句,而不仅仅是第一部分。
  • 我更新了问题以使其更清晰

标签: php if-statement logic


【解决方案1】:

你应该这样做:

$a = 1;
$b = 2;
$c = null;

if ((!is_null($a) && !is_null($b)) || !is_null($c)) {
    echo 'yes';
}
else
{
    echo 'A and B or C cannot be blank.';
}

更新:

if ((is_null($a) || is_null($b)) && is_null($c)) {
    echo 'A and B or C cannot be blank.';
}

【讨论】:

  • 当我分配这些时它失败了。 $a = 空; $b = 1; $c = 3;我已经定义了 c,所以它应该说是,但它说的是错误。
  • 你能写这个吗?如果条件则回显错误消息。就是这样。
【解决方案2】:

您已分配 A&B,但 if 条件表明 A&B 或 C 必须为真才能打印“A 和 B 或 C 不能为空白”。在您为它们赋值时,A&B 部分是错误的。这意味着 if( false (A&B 已分配) 或 true (C 未分配)) 这将导致 true 并因此打印 "A and B or C cannot be blank"

【讨论】:

  • 如果我是你,我会切换你想要回显的内容。在 if 语句中回显“是”,在 else 语句中回显“A 和 B 或 C 不能为空白”。第二种选择是将所有 is_null 更改为 !is_null 并且不要切换回显的内容。
【解决方案3】:
    $a = 1;
    $b = 2;
    $c = null;

    if ((is_null($a) && is_null($b)) || is_null($c)) {
        echo 'yes';
    }
   else{    
     echo 'A and B or C cannot be blank.';
    }

【讨论】:

    【解决方案4】:

    在您原来的帖子中,您写道

    如果设置了 A & B 或 C,它应该打印 yes,否则它应该打印错误消息

    但您实际上是在测试未设置的变量。

    更接近您的断言(也更易读)的解决方案是编写如下代码:

    if (($a && $b) || $c) {
        echo 'yes';
    } else {
        echo 'A and B or C cannot be blank.';
    }
    

    $a && $b 周围的括号不是必需的,但有助于确定预期的分组。

    【讨论】:

      【解决方案5】:
          $a = 1;
          $b = 2;
          $c = null;
      
          if ((empty($a) && empty($b)) || empty($c)) {
               echo 'A and B or C cannot be blank.';
          }
         else{    
            echo 'yes';
          }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-03-21
        • 1970-01-01
        • 2016-02-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多