2017-06-01 35 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 
}