2015-07-20 29 views
-3

三元操作從我可以告訴,有兩種方法在PHP寫的三元操作:正確的方式寫在PHP

$var = (isset($i['var']) ? $i['var'] : ""); 

$var = (isset($i['var'])) ? $i['var'] : ""; 

是這些方式「正確」的一個,還是一個更好的表現比其他,還是他們都可以互換?

+6

如果您打算考慮添加括號作爲編寫運算符的新方法,那麼不存在「兩種方式」,即有無數*種方式。您可以添加任意數量的括號,但不會更改任何內容。他們是一樣的東西。你錯過了明顯的* no *括號,並且唯一可以說是「正確的」:'$ var = isset($ x)? $ y:$ z' – meagar

+1

這就好像你問什麼是正確的一樣:'$ i = 1;'或'$ i =(((((((((1)))))) ))));'只有一種情況下,你真的想要第一個,那就是如果你嵌套三元的,你不想做的。 – Rizier123

+0

這兩種形式都有太多的括號:括號通常用於將AND和OR等邏輯運算符分組。這兩個都不在使用中,所以使用的唯一圓括號應該放在'isset()'上。 – halfer

回答

1

兩者都是正確的。事實上,在你的例子中,你根本不需要括號。你可以這樣做:

$var = isset($i['var']) ? $i['var'] : ""; 

括號不會影響你的代碼的性能。他們出於兩個原因:

  1. 刪除編譯器歧義。
    這不適用於你給出的簡單例子,因爲在操作符中只檢查了一件事情。儘管如此,在一些更復雜的情況下你可能需要括號。
  2. 使其更具可讀性。
    再次,這個簡單的例子是有或沒有方括號相當可讀,所以它不會有很大的可能性。但是,當你有更復雜的代碼時,它們可能會幫助你理解發生了什麼,即使就編譯器而言沒有任何含糊之處。