2013-07-16 30 views
4

我的腳本輸出數組應用邏輯陣列中只有某些鍵:使用PHP的的foreach

$person = array(
    'name' => 'bob', 
    'age' => '27', 
    'sex' => 'male', 
    'weight' => 'fat' 
    // ...etc. 
); 

有時$person鍵沒有價值 - 我要檢查這一點。不過,我不給約$person['age']$person['weight']一個雞塊,我只是想檢查數組中的其他按鍵不爲空:

foreach ($person as $key => $value) { 
    if ($key != 'age' || $key != 'weight') { 
     if (empty($value)) { 
      echo 'you dun goofed'; 
     } 
    } 
} 

爲什麼不是這方面的工作?

if ($key != 'age' || $key != 'weight') 

你可能想:

if ($key != 'age' && $key != 'weight') 

或類似的東西(秤好一點...):

if (!in_array($key, array('age', 'weight'))) 
+2

+1塊參考 – Orangepill

回答

3

這所有的鑰匙匹配更改||到& &。因爲它是,如果陳述將是真實的年齡和體重

+1

顯然,我是個白癡。謝謝。等待10分鐘以接受你的回答。 – izolate

1

因爲如果密鑰確實等於'age'它將仍然不等於重量,並告訴你,你不喜歡愚蠢。反之亦然。試試這個:

if (!in_array ($key, array('age','weight'))) { 
+0

我喜歡它!謝謝 – izolate

2

你可能要檢查,如果他們兩個都是空的:

if ($key != 'age' && $key != 'weight'); 

代碼:

foreach ($person as $key => $value) { 
    if ($key != 'age' && $key != 'weight') 
    { 
     if (empty($value)) 
     { 
      echo "$key field is empty<br>"; 
     } 
    } 
} 

鍵盤:http://codepad.org/hEHVru4a

希望Ť他的幫助!

+0

不錯的一個!謝謝 – izolate

2

如果說如果密鑰不是age或不是weight。如果這是正確的;

所以試試這個:

foreach ($person as $key => $value) { 
    if (!in_array($key, array('age','weight')) { 
     if ($value == FALSE) { 
      echo $key . ' is empty'; 
     } 
    } 
} 
+1

'X!= Y ||當Y!= Z'時,X!= Z'始終爲真。 – nickb

+0

是的,編輯in_array方法供將來參考。 – YahyaE