我有三个阵列:
$arr_1 = array('a'=>1,'b'=>2);
$arr_11 = array('a'=>1, 'd'=>4);
$arr_2 = array('a'=>'aaa','b'=>'bbb', 'c'=>'ccc');
我想检查$ arr_1中的所有密钥是否都存在于$ arr_2中。
someFunction($arr_1,$arr_2); //return true
someFunction($arr_11,$arr_2); //return false
我知道如何用“foreach”循环来做到这一点 还有更好的方法吗?
答案 0 :(得分:5)
也许
<?php
array_diff(array_keys($arr_1), array_keys($arr_11));
?>
更短的是,更快的dunno:)
从@deceze更新
<?php
array_diff_key($arr_1, $arr_11);
?>
答案 1 :(得分:0)
以下是另一种方法,用于检查$arr1
中是否存在$arr2
中的所有密钥:
function check($v){
return array_key_exists($v,$arr_2);
}
count(array_filter(array_keys($arr_1),"check")) == count($arr_1); // true
请注意,虽然您可能没有自己编写循环,但不可避免地会在数组中搜索任何类型的密钥。
答案 2 :(得分:0)
自己写someFunction
,并在里面使用循环。循环和array_key_exists
是这样做的方法,但如果将它包装在一个函数中,你可以保存自己将来再次使用它。
<强>更新强>
function arrayKeyCompare($control, $variable) {
foreach (array_keys($control) as $key) {
if (!array_key_exists($key, $variable)) return false;
}
return true;
}
答案 3 :(得分:0)
您可以在while循环中使用array_key_exists()
或isset()
:
$found_missing_key = false
$keys = array_keys($array1);
foreach($keys as $key) {
if(!isset($array2[$key])) {
$found_missing_key = true;
break;
}
}