2017-06-01 2 views
-1

Ich habe ein PHP-Array mit Wochentagen, per Formular absenden bekomme ich zusätzliche Daten, aber ich möchte dieses Array validieren, wenn also das Array leer ist möchte ich eine Nachricht anzeigen, mein Problem ist immer ein Sub-Array namens " Spiele "und so ist das Haupt-Array nie leer. Wie kann ich sie ignorieren?PHP Validierung Array mit Sub-Array?

Die "leeren" -Struktur Array ist wie:

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

array dump

+1

Bitte senden Sie Text und keine Bilder – RiggsFolly

+0

Also wirklich, versuchen Sie, zu überprüfen, ob die Spiele Subarray nicht leer ist? Oder gibt es noch andere Dinge als Spiele, die unter den Wochentagsnamen stehen sollen? –

+0

@ Don'tPanic Ich möchte "Spiele" -Array ignorieren, weil er immer verfügbar ist, wenn es nur "Spiele" -Array gibt, ist das ein Fehler, gibt es etwas Neues, dann ist es korrekt – nowilius

Antwort

2

Iterate das Array und die Werte für jeden Tag zählen. Da es immer einen Wert für "Spiele" geben wird, dann suchen Sie nach Zahlen < 2. Wenn irgendwelche gefunden werden, dann enthält dieses Element nur "Spiele" und Ihr Array ist ungültig.

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

Dies wird sicherstellen, dass jeden Tag etwas anderes als ‚Spiele‘ hat. Wenn Sie verifizieren müssen, dass an jedem Tag etwas außer 'Spiele' hat, dann ist die Logik das Gegenteil.

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

Ja, mindestens zwei. "Spiele" + alles andere wäre mindestens zwei. –

+0

aber nicht jedes Array enthält Spiele, denke ich. –

+0

Das OP gibt _ "es gibt immer ein Sub-Array namens 'Spiele'" _ –

0

Sie können in Reihe gehen und sie zählen:

$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 
}