2014-10-10 57 views
0

我一直在試圖把我的PHP翻譯成簡寫版本,只是爲了學習新東西的樂趣,但我無法讓我的工作。我已經看過關於這個問題的其他許多問題,但我無法適應他們中的任何一個以適應我的情況。速記if/else如何工作? [PHP]

我想翻譯到速記內容:

if ($active_page === "front-page") {echo $active_page;}

我有什麼:

echo ($active_page === 'front-page') ? 'front-page';<不工作

我知道這是一個很短的句子已經,但只是爲了學習新的東西,我想讓它成爲速記。當給我解決方案時,請嘗試解釋我做錯了什麼以及將來如何正確處理它。

+0

聲明?真假; – Tyr 2014-10-10 08:23:49

+1

這是一個簡寫if/else,而不僅僅是簡寫:'echo($ active_page ==='front-page')? 'front-page':'';' – 2014-10-10 08:24:07

+0

我想你會想添加第二個參數,這樣'echo'就有一個參數,如果你的條件不符合。即'echo($ active_page ==='front-page')? 'front-page':'';' – MrHug 2014-10-10 08:24:21

回答

1

正確的語法是

condition ? then statement : else statement; 

注意,else語句必須存在。作爲評論表明,該人可以是''

+0

好的,所以這是因爲我沒有補充說,它沒有工作?爲什麼一個正常的if語句在沒有else的情況下工作,而不是一個簡短的if語句?是否因爲它是一個簡寫if/else語句? – Rvervuurt 2014-10-10 08:25:32

+0

雖然正確的解釋有點令人困惑。 – 2014-10-10 08:25:39

+2

換句話說,它不僅僅是一個好的舊'if'的替代語法。這是一個完全不同的構造。 – 2014-10-10 08:25:58

1

的方式來定義它是

statement ? true : false; 

因此,對於你的榜樣,你還需要一個假值。

echo ($active_page === 'front-page') ? 'front-page' : 'Some default value.'; 

Here's a link我發現他們有一些很好的信息。

從這個鏈接的一點,incase它打破,你可以嵌套內聯ifs。

echo ($active_page === 'front-page') ? (($somevar > 5) ? 'Above 5' : 'Below 5') : 'Some default value.'; 
+0

我絕不會推薦堆疊三元運算符,因爲它很難正確地讀取邏輯 – 2014-10-10 08:37:02

+0

我同意一些擴展,如果它只是一個像在這個例子中,它不是很很長時間以後,我會堆疊起來,但我同意將其分開。 – 2014-10-10 08:37:55