PHP键存在于数组中

PHP键存在于数组中,php,arrays,Php,Arrays,我有三个阵列: $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

我有三个阵列:

$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”循环完成此操作。
有更好的办法吗?

也许吧

<?php

array_diff(array_keys($arr_1), array_keys($arr_11));

?>

越短越好不知道:)

更新自@deceze

<?php 

array_diff_key($arr_1, $arr_11);

?>

也许吧

<?php

array_diff(array_keys($arr_1), array_keys($arr_11));

?>

越短越好不知道:)

更新自@deceze

<?php 

array_diff_key($arr_1, $arr_11);

?>

这里有另一种方法来检查
$arr1
中的所有键是否都存在于
$arr2
中:

function check($v){
    return array_key_exists($v,$arr_2);
}
count(array_filter(array_keys($arr_1),"check")) == count($arr_1); // true

请注意,虽然您可能没有自己编写循环,但在数组中搜索任何类型的键都不可避免地会涉及一个。

这里有另一种方法来检查
$arr1
中的所有键是否都存在于
$arr2
中:

function check($v){
    return array_key_exists($v,$arr_2);
}
count(array_filter(array_keys($arr_1),"check")) == count($arr_1); // true

请注意,虽然您可能没有自己编写循环,但在数组中搜索键不可避免地会涉及到一个。

自己编写
someFunction
并在其中使用循环。循环和
array\u key\u存在
是实现这一点的方法,但如果将其封装在函数中,则可以避免以后再次执行此操作

更新

function arrayKeyCompare($control, $variable) {
    foreach (array_keys($control) as $key) {
        if (!array_key_exists($key, $variable)) return false;
    }

    return true;
}

自己编写
someFunction
,并在其中使用循环。循环和
array\u key\u存在
是实现这一点的方法,但如果将其封装在函数中,则可以避免以后再次执行此操作

更新

function arrayKeyCompare($control, $variable) {
    foreach (array_keys($control) as $key) {
        if (!array_key_exists($key, $variable)) return false;
    }

    return true;
}
您可以在while循环中使用或
isset()

$found_missing_key = false
$keys = array_keys($array1);
foreach($keys as $key) {
    if(!isset($array2[$key])) {
        $found_missing_key = true;
        break;
    }
}
您可以在while循环中使用或
isset()

$found_missing_key = false
$keys = array_keys($array1);
foreach($keys as $key) {
    if(!isset($array2[$key])) {
        $found_missing_key = true;
        break;
    }
}

我以前从未使用过,所以我不知道func的存在。我加上它,从这里我得到c,d。我不知道该数组来自哪个数组对不起,但这不是要返回一个或另一个数组唯一的所有键吗?如果是,他如何知道哪个数组有“额外”键?@lvil您想检查一个数组是否包含另一个数组中没有的键。因此,如果diff操作包含任何内容,则意味着一个数组包含更多的键。请阅读手册,了解返回值的确切含义。@BrianWarshaw
array\u key\u diff
是不对称的。它只返回第一个参数中不存在的键,而不是其他参数中的键。我以前从未使用过,所以我不知道func存在。我加上它,从这里我得到c,d。我不知道该数组来自哪个数组对不起,但这不是要返回一个或另一个数组唯一的所有键吗?如果是,他如何知道哪个数组有“额外”键?@lvil您想检查一个数组是否包含另一个数组中没有的键。因此,如果diff操作包含任何内容,则意味着一个数组包含更多的键。请阅读手册,了解返回值的确切含义。@BrianWarshaw
array\u key\u diff
是不对称的。它只返回第一个参数中任何其他参数都不存在的键,而不是相反的键。-将array1中的键与array2中的键进行比较,并返回差值。此函数类似于
array_diff()
,只是比较是在键上而不是值上进行的。-将array1中的键与array2中的键进行比较,并返回差值。此函数类似于
array_diff()
,只是比较是在键上而不是值上进行的。