Php 检查变量是否为空

Php 检查变量是否为空,php,if-statement,Php,If Statement,我有$var1、$var2、$var3和$type。当$type=1时,我想检查$var1和$var2是否为空,但当$type=2时,我想检查$var1、$var2和$var3是否为空 我试过了 if(($type==1 AND empty($var) AND empty($var1)) OR ($type==2 AND empty($var1) AND empty($var2) AND empty($var3))) {//...} 但是当$type=2时,它在第二种情况下不起作用; 那么

我有$var1、$var2、$var3和$type。当$type=1时,我想检查$var1和$var2是否为空,但当$type=2时,我想检查$var1、$var2和$var3是否为空

我试过了

 if(($type==1 AND empty($var) AND empty($var1)) OR ($type==2 AND empty($var1) AND empty($var2) AND empty($var3)))
 {//...}
但是当$type=2时,它在第二种情况下不起作用;
那么,如何使用一条if语句来实现这一点呢?

我建议使用多条if语句:

switch($type) {
  case 1: if(empty($var1) && empty($var2)) {
    …
  }
  break;
  case 2: if(empty($var1) && empty($var2) && empty($var3)) {
    …
  }
   break;
}

不要使用if,但要利用开关中的机箱

$result = TRUE;
switch ($type) {
    case 2:
        $result = $result && empty($var3);
    case 1:
        $result = $result && empty($var2);
        $result = $result && empty($var1);
        break;
    default:
        $result = FALSE;
}

在第一种情况下,您编写了$var而不是$var1

请参见,使用换行符:

if (
    ($type==1 AND empty($var) AND empty($var1))
   OR
    ($type==2 AND empty($var1) AND empty($var2) AND empty($var3))
   ) {}
//                        ^
如果你的代码不是完全难以辨认的话,你就会发现这个

否则:


这一事实使这完全不成问题。请在将来对您的问题更加小心,提供实际的测试用例来重现问题,以证明您并没有犯下您没有告诉我们的其他错误。

在我看来是有效的。丑陋但有效。您在第一个空语句中使用$var,在检查type2时使用$var1。故意的还是打字错误?结果是行不通——尽管毫无意义——甚至不准确。看我的答案。我喜欢这种方法。在案例1中,您可以编写$result=$result&&empty$var2&&empty$var1;所以我不能只使用一个if,而是使用多个if语句+switch?@lam3r4370:是的,你可以。你的代码运行得很好,只是不好看,所以建议你修改它。看看我的答案。事实上,阅读所有答案,而不仅仅是最上面的答案。@knittl-如果我是为自己做的话,我会这么做的,但是为了OP的利益,我会直接写下来。在一个案例中允许中途退出而不是使用中断有时会很有用,就像在这个案例中一样。。。。但在现实世界中,我也会提出一个解释来解释为什么不休息,其他一些开发人员可能认为这是一个错误而好的建议,但这并不能回答这个问题。问题是为什么我的代码不能执行我期望的功能?答案是确实如此。虽然这是一个很好的建议,但它并不能回答所提出的问题。问题是为什么我的代码不能执行我期望的功能?答案是有。你是对的。我不知道这个网站,因此我没有重现这个问题。谢谢你的建议:
<?php
$type = 2;
$var  = '';
$var1 = '';
$var2 = '';
$var3 = '';

if(($type==1 AND empty($var) AND empty($var1)) OR ($type==2 AND empty($var1) AND empty($var2) AND empty($var3))) {
   echo '!';
}

// Output: !
?>