2012-12-11 52 views
1

我有以下的PHP腳本PHP總之如果Statment OR

<?php 
    echo (($statusSet) == 'all') ? "class='selected'": ""; 
?> 

我想什麼做的是包括或進入這個說得清$ statusSet等於全部或NULL

林與藿寫這competely丟失我嘗試添加普通型或說明,沒有工作

<?php 
    echo ((($statusSet) == 'all')||(($statusSet) == 'all'))) ? "class='selected'": ""; 
?> 
+0

什麼與所有括號?我可以理解,在不需要IF語句的地方放置括號,但圍繞單個變量?你害怕php認爲'Set'不是'$ statusSet'的一部分,因爲它的大寫? –

+0

爲什麼大家都反對括號?它們可以很好地用於分組邏輯和使代碼更清晰。如果你不喜歡它們,那很好......但是暗示它在某種程度上是不好的。 –

+0

如果你的php版本足夠新:'echo!in_array($ statusSet,array('all',null))?:'class =「selected」';'也可以,並且可以輕鬆添加更多值。 – Yoshi

回答

6

所有你正在做的是添加另一個表達式在總體if語句中進行評估。下面

<?php echo (($statusSet == 'all' || $statusSet === null) ? "class='selected'": ""); ?> 

有人張貼了幾乎相同的段,以礦,但使用is_null()代替。請注意,使用is_null()=== null是好的,但使用== null不是最佳實踐 - 它不會確保類型相等,因此如果$ statusSet設置爲(int)0,做$ statusSet == null將返回true時,它實際上不是一個空值。

+0

上忘記了$ $今天每個人的括號都是什麼? :)你可以刪除你所有的分組$ statusSet =='all'|| $ statusSet === null? 「class ='selected'」:「」;將工作得很好。 –

+0

當然,你可以省略它們。鑑於OP缺乏對邏輯表達式的完全理解,我認爲謹慎使用括號來表示括號中的所有內容都是合乎邏輯的表達式......您不需要將每個條件包含在雙括號內等等。爲了清晰和示範...顯然他們不是必需的,但是也沒有任何空白......儘管如此,這會非常醜陋。 :) –

+0

現在,這是我不明白。爲什麼null === null評估爲true。 – itachi

2

所以這樣嗎?

echo $statusSet == 'all' || $statusSet === NULL ? "class='selected'": "";?> 

我不知道您複製正確的路線進入的問題,但你不工作的原因是因爲這兩個條件是完全一樣的,因此,如果一個爲真,那麼則是這樣另一個。

+0

您錯過了第二個條件的左括號。 :) –

+0

不需要我的朋友,其實他們都不是..請參閱我的編輯。 – George

+0

如果您使用它們,但沒有正確的編號,那就是編譯錯誤。所以實際上......你確實需要另一個,直到你完全刪除它們。 :) –

0
<?php echo (($statusSet == 'all') || (is_null($statusSet))) ? "class='selected'": "";?> 
+0

您在第二個$ statusSet變量 –