2013-04-04 53 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