如何检查是否存在多个阵列键

2022-08-30 07:34:55

我有各种各样的数组,它们将包含

story & message

或者只是

story

如何检查数组是否同时包含故事和消息? 仅在数组中查找该单个键。array_key_exists()

有没有办法做到这一点?


答案 1

下面是一个可扩展的解决方案,即使您想要检查大量密钥:

<?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

如果您只有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);
}

推荐