php - 如何检查数组是否有给定键
问题描述
从性能的角度来看,检查关联数组是否具有且仅具有给定键集的最佳方法是什么?同样的问题,但从代码简洁的角度来看?
function checkArrKeys(array $arr, array $keys):bool {
$arrKeys=array_keys($arr);
sort($arrKeys);
sort($keys);
return $arrKeys===$keys;
}
function checkArrKeys(array $arr, array $keys):bool {
return ($cnt = count(array_intersect(array_keys($arr), $keys)))===count($arr) && $cnt===count($keys);
}
function checkArrKeys(array $arr, array $keys):bool {
return !(array_diff_key($arr, array_flip($keys)) || array_diff_key(array_flip($keys), $arr));
}
解决方案
您可以通过支票使用array_diff()
它。count()
function checkArrKeys(array $arr, array $keys):bool {
return count(array_diff(array_keys($arr),$keys)) === 0 && count($keys) === count(array_keys($arr));
}
推荐阅读
- javascript - 使用 ForEach() 正确访问内部数组值 - JavaScript
- php - PHP 下载的文件以 7 个缩进开头
- javascript - 代码在 CSHTML 中有效,但在外部 Javascript 文件中无效
- apache-kafka - Kafka 因动物园管理员超时而关闭
- python - 如何获取包含位置在内的历史推文
- java - 在我的 SavingsAccount 对象上调用函数并打印结果
- html - 我的容器 max-width: 960px 似乎不起作用
- javascript - 检查JS中是否存在数组的正确方法是什么?
- r - 更改图形设置后Rstuido崩溃并且即使重新安装也不会重新打开
- go - go - 如何跨所有连接的tcp客户端访问变量?