PHP AND OR Condition with if else


PHP AND OR Condition with if else

我有一个困惑,这里是什么问题?如果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';

这里我有一个&B已赋值,但仍然打印'A and B or C不能为空'

让它更清楚。A=名,B=姓,C=电子邮件。

你应该这样做:

$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,但是if条件要求A&B或C必须为真才能打印"A and B or C不能为空"。A&B部分在你赋值的那一刻是假的。这意味着if(false (A&B已赋值)或true (C未赋值))将导致true,从而打印"A and B or C cannot be blank"

    $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 A &如果设置了B或C,它应该打印yes,否则它应该打印错误信息

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

一个更接近你的断言(也更可读)的解决方案是这样写代码:

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

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

    $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';
    }