2012-03-18 74 views
1

Ahoy all。我有一個聯繫表格PHP腳本。我將它用於多個站點,因爲它非常快捷和簡單。基本上,它通過聯繫表單中的所有表單字段循環,不管它們是什麼。這樣做,我不必一個一個手動做POST事情。關於PHP運營商的使用感到困惑

ANYWAY,我的問題很簡單。下面的代碼片段:現在

if ($thisField != "contact-submit") { 
    if (($thisField != "human2")) { 
     $msg .= "<b>".$thisField ."</b>: ". $thisValue ."<br>"; 
    } 
    } 

,用它做這個循環的問題是它拿起提交的所有東西,包括提交按鈕和我隱藏的表單字段,以防止機器人。我不想將這些字段顯示給我的客戶。的

所以不要做這兩個嵌套的循環,我想做得

if (($thisField != "human2") or ($thisField != "contact-submit") 

,但它只是不工作。我也曾嘗試||運營商也是如此。

我錯過了什麼?

+0

*(相關)* [這是什麼符號意味着PHP(http://stackoverflow.com/questions/3737139/reference-what-does-this-symbol-mean- in-php) – Gordon 2012-03-18 21:48:19

+0

*忘記了..... ^^ * – 2012-03-18 21:48:21

回答

2

該表達式始終評估爲true。如果您將一個值與兩個不同的值進行比較,則至少其中一個值是不相等的。 我想你的意思是使用and&&,所以你可以檢查這個值是不是這兩個值中的任何一個。

if (($thisField != "human2") && ($thisField != "contact-submit") 

if (!($thisField === "human2" or $thisField === "contact-submit")) 

if (($thisField === "human2" or $thisField === "contact-submit") === false) 
// Because you might easily overlook the exclamation mark in the second example 

或使用in_array

if (! in_array($thisField, array('human2', 'contact-submit'))) 
// Easier add extra fields. You could stick the array in a variable too, for better readability 
+0

你錯了。如果'$ thisField'等於'0',那麼這兩個表達式都是真的。 – Gumbo 2012-03-18 21:50:06

+0

是的,所以表達整體仍然評估爲真。我的確切點。 – GolezTrol 2012-03-18 21:55:17

+0

對不起,我的意思是它們是錯誤的,不正確:因爲兩個字符串都被轉換爲整數並且產生了'0',所以'0!='human2''爲false並且'0!='contact-submit「 – Gumbo 2012-03-18 21:58:39

3

$thisField將永遠不會human2或聯繫不上,透過(如果它是一個,它的而不是其他)。你一定意味着&&

if($thisField != "human2" && $thisField != "contact-submit") 
+0

@PaulHanak:是的,如果兩個操作數都是'true','&&'返回'true'。如果它不是'human2'和'contact-submit'',這是另一種說法'不'human2'而不是'contact-submit'的方式,您希望它處理該字段。所以它更像是其中的一種「乘以兩個負面因素並獲得積極」的交易。 – Ryan 2012-03-18 21:52:45

+0

謝謝@minitech。我真的不得不把它分解在我腦海中,但是我去了。呵呵。有趣的是,有時候,簡單的事情會讓我感到困惑 – PaulHanak 2012-03-18 22:41:50