2013-04-04 57 views
3

我只是想知道是否有更好的方式来解决我的境况:php更具可读性如果语句

我有6个独立变量来检查。但是,如果任何条件是真的,它不应该检查其他。通常我会写:

if (cond1) { 
      statement 
    } else { 
     if (cond2) { 
      statement  
     } else { 
     if (cond3) { 
      statement 
     } else { 
     ...  
     } 
     } 
    } 

你一定会承认它并不好看,或者是不容易读,虽然它的工作原理。你知道有其他的方式来写这样的if语句可能使用其他符号或函数(切换?会吗?)

+0

如果你的条件是简单的文本/数字匹配,使用'之开关 – 2013-04-04 16:35:48

+0

我不能,条件是函数返回值和ion每个条件函数名称是不同的 – Kalreg 2013-04-04 16:37:09

+1

如果每个函数都返回一个布尔值,我认为你可以'switch(true){case func1():...}'尽管如此。只要坚持一个清晰的if-elif-else。 – Wiseguy 2013-04-04 16:43:05

回答

7

是的,你可以做

if (cond1) { 
    statement 
} elseif (cond2) { 
    statement 
} elseif (cond3) { 
    statement 
} 

documentation

+0

就像旧时代的基本:d – Kalreg 2013-04-04 16:35:53

+0

啊哈,你打我太它:○ – 2013-04-04 16:36:25

+0

@Kalreg最有类似C的语法语言有“否则,如果”。 – 2013-04-04 16:36:42

0
if (cond1) { 
      statement 
    } else { 
     if (cond2) { 
      statement  
     } else { 
     if (cond3) { 
      statement 
     } else { 
     ...  
     } 
     } 
    } 

更改为:

if (Cond1){ 

}elseif (cond2){ 

}elseif (cond3){ 

} 
1

A more stylish way:

if(cond1): 
    statement1 
elseif(cond2): 
    statement2 
elseif(cond3): 
    statement3 
elseif(cond4): 
    statement4 
elseif(cond5): 
    statement5 
elseif(cond6): 
    statement6 
endif; 

这是你如何用switch()做到这一点:

$a = 10; 
$b = 100; 

switch(true){ 
    case ($a > $b): 
     echo 'a is bigger than b';break; 
    case ($b > $a): 
     echo 'b is bigger than a';break; 
} 
+2

你应该使用括号 - 它更易于阅读,大多数编码标准更喜欢它。 – calumbrodie 2013-04-04 16:47:29

+0

@ kissmyface尴尬的绰号,无论如何,我确实同意你的看法,我只是提供了另一种“做法”。此外,如果这些陈述不是那么大,我认为这个看起来会更好...... – HamZa 2013-04-04 16:49:26

+1

;-)这是一个参考,而不是邀请。我要改变它,但 – calumbrodie 2013-04-05 02:19:56