首页 > 解决方案 > 如何检查数组是否有给定键

问题描述

从性能的角度来看,检查关联数组是否具有且仅具有给定键集的最佳方法是什么?同样的问题,但从代码简洁的角度来看?

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));
}

标签: phparraysvalidation

解决方案


您可以通过支票使用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));
}

推荐阅读