如何检查是否存在多个阵列键
我有各种各样的数组,它们将包含
story & message
或者只是
story
如何检查数组是否同时包含故事和消息? 仅在数组中查找该单个键。array_key_exists()
有没有办法做到这一点?
我有各种各样的数组,它们将包含
story & message
或者只是
story
如何检查数组是否同时包含故事和消息? 仅在数组中查找该单个键。array_key_exists()
有没有办法做到这一点?
下面是一个可扩展的解决方案,即使您想要检查大量密钥:
<?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!
}
如果您只有2个密钥要检查(就像在原始问题中一样),那么只需调用array_key_exists()
两次来检查密钥是否存在可能就足够了。
if (array_key_exists("story", $arr) && array_key_exists("message", $arr)) {
// Both keys exist.
}
然而,这显然不能很好地扩展到许多键。在这种情况下,自定义函数会有所帮助。
function array_keys_exists(array $keys, array $arr) {
return !array_diff_key(array_flip($keys), $arr);
}