2015-04-28 3 views
0

Как я могу (самый быстрый) проверить, что массив содержит N определенных элементов в PHP.проверить необходимые аргументы в массиве

Подобно

array_key_exists($key, array $array) 

а

array_keys_exists(array $requiredKeys, array $array) 
+2

Использование цикла foreach –

+0

Должно ли существовать все '$ requiredKeys' или только одно? – PeeHaa

+0

@PeeHaal. Все. КСТАТИ. Я могу закодировать его, но я ищу здесь C-мудрый ярлык ... – Teson

ответ

2

вы можете использовать array_intersect_key(array $requiredKeys, array $array);

он возвращает массив с ключами соответствия, то вы можете сравнить длину ваших необходимых ключей массив и возвращаемый функцией, чтобы проверить, существует ли все

<?php 

//The values in this arrays contains the names of the indexes (keys) 
// that should exist in the data array 
$required = array('key1', 'key2', 'key3'); 

$data = array(
    'key1' => 10, 
    'key2' => 20, 
    'key3' => 30, 
    'key4' => 40 
); 

if(count(array_intersect_key(array_flip($required), $data)) === count($required)) { 
    //All required keys exist!    
} 
1
$required = ['foo', 'bar', 'baz']; 
if (array_diff_key(array_flip($required), $array)) { 
    throw new Exception(sprintf('Required keys: %s, got: %s', 
           join(', ', $required), 
           join(', ', array_keys($array)))); 
} 

Если array_diff_key возвращает ничего, кроме пустого массива (== false), это означает, что некоторые клавиши отсутствуют. Вы даже можете сохранить эту разницу и сообщить пользователю/разработчику, какие именно ключи отсутствуют в сообщении об ошибке, если вы были так склонны.

Смежные вопросы