2013-03-04 58 views
-1

我試圖做一個簡單的健康檢查,如:條件語句不起作用

$test = 1; 
$test_ = $test==-1?"Test--1":$test==1?"Test-1":$test==0?"Test-0":"Test"; 
echo $test_; 

輸出是Test-0但必須Test-1

這可能是問題所在?

+4

的問題是,你一疊三元運營商相互轉化。不要那樣做......這很醜陋,而且是一個維護地獄。 – 2013-03-04 11:52:07

+0

問題是,你在嵌套三元組時沒有注意到在PHP文檔中這樣做的警告......'如果'/'else'更具可讀性,並且更直觀 – 2013-03-04 11:52:46

+0

如果我必須完成你所做的,我會這樣做'echo $ test_ =「Test-」。 $ test;' – Ravi 2013-03-04 11:58:31

回答

3

試試這個:把括號內爲條件。

$test = 1; 
$test_ = ($test==-1)?"Test--1":($test==1?"Test-1":($test==0?"Test-0":"Test")); 
echo $test_; 

輸出:

Test-1 
+0

括號對於三元運算非常有用:) – Jimbo 2013-03-04 12:00:56

+0

好的,它的工作原理! :)謝謝..但爲什麼它與括號的作品,它不工作沒有? – JackTurky 2013-03-04 12:47:51

1

改變這種

$test_ = $test==-1?"Test--1":$test==1?"Test-1":$test==0?"Test-0":"Test"; 

$test_ = $test==-1?"Test--1":($test==1?"Test-1":($test==0?"Test-0":"Test")); 

工作示例http://viper-7.com/msuCyk

// output Test-1 
0

在PHP三元操作符是從左到右,因此,它的執行是這樣的:

$test_ = ((($test==-1 ? "Test--1" :$test==1) ? "Test-1":$test==0)?"Test-0":"Test");