Как я могу (самый быстрый) проверить, что массив содержит N определенных элементов в PHP.проверить необходимые аргументы в массиве
Подобно
array_key_exists($key, array $array)
а
array_keys_exists(array $requiredKeys, array $array)
Как я могу (самый быстрый) проверить, что массив содержит N определенных элементов в PHP.проверить необходимые аргументы в массиве
Подобно
array_key_exists($key, array $array)
а
array_keys_exists(array $requiredKeys, array $array)
вы можете использовать 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!
}
$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
), это означает, что некоторые клавиши отсутствуют. Вы даже можете сохранить эту разницу и сообщить пользователю/разработчику, какие именно ключи отсутствуют в сообщении об ошибке, если вы были так склонны.
Использование цикла foreach –
Должно ли существовать все '$ requiredKeys' или только одно? – PeeHaa
@PeeHaal. Все. КСТАТИ. Я могу закодировать его, но я ищу здесь C-мудрый ярлык ... – Teson