2012-01-28 83 views
-3

我有$var1,$var2,$var3$type。我想检查$var1$var2是否为空时$type=1$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语句完成它不会在第二种情况下工作吗?

+3

看起来对我有效。丑,但有效。 – 2012-01-28 18:13:35

+0

在第一个空语句中使用'$ var',在检查type2时使用'$ var1'。意图还是错字? – knittl 2012-01-28 18:15:22

+2

结果“不起作用” - 毫无意义 - 甚至不准确。看到我的答案。 – 2012-01-28 18:19:55

回答

3

不要“如果”使用,而是采取通过案件开关

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

我喜欢这种方法。在情况1中,你可以编写'$ result = $ result && empty($ var2)&& empty($ var1);' – knittl 2012-01-28 18:16:25

+0

所以我不能只用一个if语句来完成它, – lam3r4370 2012-01-28 18:17:31

+0

@ lam3r4370:是的,你可以。你的代码的工作方式很好(除非它很丑,所以推荐_修改它)。看到我的答案。事实上,阅读所有的答案,不仅仅是最重要的答案。 – 2012-01-28 18:19:05

1

我建议使用多个if语句:

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

虽然很好的建议,但这并没有回答所述的问题。问题是“为什么我的代码不能执行我期望的功能?”答案是“它确实”。 – 2012-01-28 18:25:39

1

下降。在第一种情况下优势,你写了$var而不是$var1

看到,随着换行符:

if (
    ($type==1 AND empty($var) AND empty($var1)) 
    OR 
    ($type==2 AND empty($var1) AND empty($var2) AND empty($var3)) 
    ) {} 
//      ^

你必须看准了这一点,如果你的代码并不完全无法辨认。

否则,your code does perform as advertised

<?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: ! 
?> 

这一事实使这是一个总的非的问题。请在将来更加注意您的问题,提供实际的测试案例,实际上重现问题,以证明您不只是犯了一些其他错误,而您没有向我们展示。

+0

你是对的。我不知道这个网站,因此我没有重现这个问题。谢谢你的建议:) – lam3r4370 2012-01-28 18:30:07