2013-01-19 53 views
1

我怎樣才能使這一個或兩個線速記三元?PHP簡寫的if/else三元

if ($tame == null): 
    echo $tame = '0' . '<br />'; 
else: 
    echo $tame . '<br />'; 
endif; 
+3

您的意思是分配'0
''到$ tame'第一'echo'聲明? – mellamokb

回答

4

貌似OP期待$馴服是一個整數值。爲什麼他會爲零寫零?

如果是這種情況。這是最短的解決方案。

echo (int)$tame.'<br/>'; 

這將回顯0 null或數字值。也沒有理由將$ tame設置爲零,因爲PHP將null和zero視爲相同。

+0

他並沒有真正暗示這一點,所以我們並不真正知道 –

+0

確實如此,但我試圖變得聰明; ) – cgTag

+1

如果他打算$ tame是一個整數,這將是最好的答案,但對於完整的解決方案,您仍然需要將它設置爲零,所以我會這樣做 - echo($ tame =(int )$ tame),'
';' –

3
$tame = ($tame == null) ? 0 : $tame; 
echo $tame . '<br />'; 
0
echo (is_null($tame)) ? '0<br />' : $tame . '<br />'; 
+0

這與寫的內容不一樣。原來,'馴服'發生了變異。 – zzzzBov

+0

這項任務似乎是一個錯誤。否則的已知值'$ tame'很可能已經擁有了''
結束時,然後打印一個額外的BR標籤。 – joemaller

2
echo $tame == null ? $tame = '0<br />' : $tame.'<br />'; 
+1

他想也設置'$ tame'等於零。 –

+0

@AustinBrunkhorst你是對的!固定。 「 – sachleen

1
echo ($tame == null ? ($tame = 0) : $tame), '<br />'; 
1

三元運營商基本上是在同一行的if..else聲明。

if (condition) { 
    action(a); 
} else { 
    action(b); 
} 

變爲:

action(condition ? a : b); 

你有什麼是:

if ($tame == null) { 
    echo $tame = '0' . '<br />'; 
} else { 
    echo $tame . '<br />'; 
} 

這可以寫成:

echo $tame == null ? $tame = '0<br />' : $tame . '<br />'; 

然而,這種三元說法是相對複雜,因爲$tame正在發生變化,作爲聲明的一部分。以這種方式編寫的代碼很難閱讀,因此難以調試,這使得它更容易出錯。如果您在更詳細的形式寫的代碼這將是更好的整體:

if ($tame == null) { 
    $tame = '0'; 
} 
echo $tame . '<br />'; 
+0

」可以寫成..「 - 這將包括'$ tame'中的換行符,我認爲他不會這樣做。 –

+0

@AustinBrunkhorst,這就是他會得到的是否他想要的東西。正如我所說:難以閱讀=困難調試=容易出錯 – zzzzBov

0

再來一個怎麼樣的方式:)

echo $tame . (!is_null($tame)?:'0'). '<br />'; 

,你可以看到我省略了中間環節,因爲PHP 5.3你可以做這樣的

三元部分而僅是需要被打印你仍然可以做這樣的老年人PHP的一部分

echo $tame . (is_null($tame)?'0':''). '<br />'; 
+0

他也想設置'$ tame'等於零 –

0

如果$tame爲空或一個整數,你完全可以跳過的邏輯:

echo sprintf("%d<br />", $tame); 

這是假設你不是故意要在第二行分配給"0<br />"$tame,由@mellamokb指出。