2013-06-07 14 views
8

Obecnie używam następujący:Sprawdź, czy wszystko z kilku kluczy tablicy PHP istnieje

$a = array('foo' => 'bar', 'bar' => 'foo'); 

    if(isset($a['foo']) && isset($a['bar'])){ 
     echo 'all exist'; 
    } 

jednak będę miał jeszcze kilka kluczy tablicy niż foo i bar że muszę sprawdzają. Czy istnieje skuteczniejszy sposób sprawdzania każdego wymaganego klucza niż dodawanie isset dla każdego wymaganego wpisu?

+0

zignorować możliwego duplikatu flagą; Właśnie zauważyłem subtelną różnicę. –

Odpowiedz

23

Można je połączyć w jednym isset() rozmowy:

if (isset($a['foo'], $a['bar']) { 
    echo 'all exist'; 
} 

Jeśli masz tablicę wszystkich klawiszy, które są wymagane, można zrobić:

if (count(array_diff($required_keys, array_keys($a))) == 0) { 
    echo 'all exist'; 
} 
+0

Otrzymywanie błędu: 'Nie można użyć zwracanej wartości funkcji w kontekście zapisu' dla linii 'if (empty (array_diff ($ required_keys, array_keys ($ a)))' ' – Mooseman

+0

Podobno' empty() 'wymaga argumentu być zmienną, a nie wyrażeniem Zmieniono, aby używać 'count()'. – Barmar

+0

Po prostu to, czego potrzebowałem.Dzięki! – Mooseman

1

Można by utworzyć tablicę wszystkich wpisów, które chcesz sprawdzić, a następnie wykonaj ich iterację.

Jeśli $ allPassed = true, wszystkie są dobre - false oznacza, że ​​jeden lub więcej nie powiodło się.

0

Prawdopodobnie najczystszy jest

if (array_diff(['foo', 'bar'], array_keys($a))) === []) { 
    echo 'all exist'; 
} 
Powiązane problemy