PHP AND OR使用if else条件

时间:2015-10-01 10:01:06

标签: php if-statement logic

我有一个困惑,这里有什么不对?如果A&设置B或C应该打印是,否则应该打印错误信息

$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 =电子邮件。因此,用户应该提供名字和姓氏,否则请发送电子邮件。

5 个答案:

答案 0 :(得分:5)

您应该按照以下方式执行此操作:

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

答案 1 :(得分:1)

您已分配A& B,但if条件表示A& B或C必须为true才能打印“A和B或C不能为空”。在您为其分配价值时,A& B部分是假的。这意味着如果(假(A& B指定)或真(未指定C))将导致为真,因此打印“A和B或C不能为空”

答案 2 :(得分: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.';
    }

答案 3 :(得分:1)

在你的原帖中,你写了

  

如果A&设置B或C应该打印是,否则应该打印错误信息

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

更接近你的断言(也更具可读性)的解决方案是编写如下代码:

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

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

答案 4 :(得分:0)

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