2012-03-05 26 views
-1

我對這段代碼感到困惑。 $this->product是一個有12個變量的對象。 var_dump表示$key是一個字符串。爲什麼條件語句在這個例子中不起作用?

foreach ($this->product as $key => $val) { 
    if (($key !== "id") || ($key !== "weight")) { 
     var_dump($key); 
    } else { 
     print_r("Success" . $key); 
    } 
} 

儘管「ID」和「重量」存在的VAR名稱和表示爲內$key字符串他們沒有這個條件抓住了。有沒有人有任何想法?

+4

你有一個邏輯錯誤。 '$ key'將*總是*不是'id' **或**不是'weight' – 2012-03-05 16:49:27

回答

4

我想你的意思做:

foreach ($this->product as $key => $val) { 
    if (($key !== "id") && ($key !== "weight")) { 
     var_dump($key); 
    } else { 
     print_r("Success" . $key); 
    } 
} 

(($key !== "id") || ($key !== "weight"))始終是真實的,$key不能「id」和「重量」在同一時間。

+1

+1。 [德摩根法律](http://en.wikipedia.org/wiki/De_Morgan%27s_laws)FTW! – ruakh 2012-03-05 16:50:42

+0

非常真實...代表我的合計邏輯錯誤。 – 2012-03-05 17:07:20

0

如果key ==「id」,那麼它不會==「重量」,所以它會一直通過你的if檢查。

0

那麼它將永遠不會到達else語句,因爲在任何情況下密鑰將不等於「id」或不等於「weight」。

改變你的條件語句$鍵==「ID」 & & $鍵==「重量」

0

你的條件正趕上那裏$key"id"或者沒有"weight" - !所以它會趕上一切如$key不能同時存在。

你打算用:

if (($key !== "id") && ($key !== "weight")) { 
    var_dump($key); 
} else { 
    // $key is "id" or "weight" 
    print_r("Success" . $key); 
} 
相關問題