2017-06-01 37 views
-1

我有平日一個PHP數組,通過表單提交,我得到額外的數據,但我想驗證這個數組,所以如果數組爲空時要顯示的消息,我的問題總有一個子陣列稱爲「遊戲「,所以主陣列從不空置。我怎麼能忽略它們?PHP驗證數組與子數組?

「空」 陣列結構是這樣的:

monday' = ['games' = [1, 2, 3, 'game_off']],

array dump

+1

請上傳文字和圖片不那麼 – RiggsFolly

+0

真的,你想驗證遊戲子陣列是不是空的?或者除了應該在週日名稱鍵下的遊戲,還有其他的東西嗎? –

+0

@ Don'tPanic我想忽略「遊戲」陣列,監守他總是可用的,如果只有「遊戲」陣列,這是錯誤,是有一些新的東西,然後它是正確的 – nowilius

回答

2

迭代陣列和計數的每一天的值。由於總是會有的「遊戲」的一個值,然後再尋找數< 2.如果發現有異常,那麼該項目只包含「遊戲」,你的陣列是無效的。

$valid = true; 
foreach ($array as $day => $values) { 
    if (count($values) < 2) { 
     $valid = false; 
     break; 
    } 
} 

這將確認每天有除了「遊戲」的東西。如果您需要驗證任何一天有除了「遊戲」的東西,那麼邏輯是相反的。

$valid = false; 
foreach ($array as $day => $values) { 
    if (count($values) > 1) { 
     $valid = true; 
     break; 
    } 
} 
+0

呀,至少兩個。 '遊戲'+其他任何東西至少有兩個。 –

+0

但不是每個數組包含遊戲,我認爲。 –

+0

的OP狀態_「總有一個子陣列稱爲‘遊戲’」 _ –

0

你可以走進陣列並計數:

$count = 0; 
foreach ($array as $item) { 
    if (is_array($item) && count(item) > 0){ 
     foreach ($item as $key => $subitem) { 
      if ($key != 'games'){ 
       $count++; 
      } 
     } 
    } 
} 

if ($count > 0){ 
    //your array is valid 
}