2011-03-22 159 views
0

這是我有:邏輯或將無法正常工作的if語句

<?php if($row['id']!="9") echo "style=\"display:none\""; ?> 

很簡單,它應該把style="dsplay:none"當「ID」是什麼,但9這樣做的工作做好,但我想包括'id'8,12和13。看上去很簡單,剛添加的邏輯或類似這樣的:

<?php if($row['id']!="8||9||12||13") echo "style=\"display:none\""; ?> 

,但現在不工作,所以它style="dsplay:none"所有的時間地點。

我想圍繞走另一條路,這樣做,

<?php if($row['id']=="4||5||6||11") echo "style=\"display:none\""; ?> 

而是圍繞style="dsplay:none"這個時候從來沒有放置。
這使我得出這樣的結論:邏輯或邏輯必然存在錯誤。但它是什麼?請讓我知道,謝謝!

+0

擺脫報價狂歡。有''''和'''是有原因的;) – ThiefMaster 2011-03-22 20:22:23

+0

邏輯或沒有任何問題,而且PHP沒有足夠的錯誤來讓它在不被要求的情況下對字符串進行評估,但是,理解邏輯或 – delnan 2011-03-22 20:22:28

回答

3

你想:

if($row['id']!= 8 && $row['id'] != 9 && $row['id'] != 12) 

,因爲你正在做它的$ row['id']的值與字符串值"8||9||12||13"目前的方式。

或者,你可以這樣做:

if(in_array($row['id'], array(8, 9, 12))) 

凝結的條件。

+1

我認爲這些應該是&&而不是||,因爲該語句總是如此,除非$ row ['id']'同時等於'「8」'「」9「'和'「12」' – 2011-03-22 20:23:02

+0

非常感謝你的清理! – crashtest 2011-03-22 20:47:46

1

我建議你寫

<?php if(in_array($row['id'], array(8, 9, 12, 13)) /* ... */; ?> 
1

您正在比較數字與字符串的方式不起作用。例如。 1$row['id']不等於字符串"4||5||6||11"

您可以使用in_array功能,檢查一個值是否在數組中存在:

if(!in_array($row['id'], array(4, 5, 6, 11)) echo ' style="display:none"'; 

邏輯或公司(||)不字符串內工作。

2

你不能這樣做。

要麼使用if($row['id'] == 4 || $row['id'] == 5 || ...)或使用in_array()if(in_array($row['id'], array(4,5,6,11)))

0

這是不符合邏輯,或者說是一個字符串文字。但De Morgan

if(($row['id']!="8") && $row['id']!="9" && ...