array_diff检查一个数组中的值与另一个数组中的键

时间:2015-04-26 23:10:30

标签: php arrays

array_diff(),它检查来自一个数组的值与来自另一个数组的值。然后是array_diff_key(),它检查来自一个阵列的键与来自另一个阵列的键。是否有核心函数或非循环方式来检查一个数组中是否存在不是另一个数组中的键的值,并将这些值返回到数组中?该函数需要检查关联或顺序的键。

E.g:

function somefunction($values, $keys)
{
    // hopefully no loops
    return $array;
}
$keys = array(1=>'one',2=>'two',3=>'three');
$values = array(1,3,5);    
print_r(somefunction($values, $keys);

会回来:

Array
(
    [0] => 5
)

$keys = array('ingmar'=>'bergman','jim'=>'jarmusch','wim'=>'wenders');
$values = array('jim','wim','john');    
print_r(somefunction($values, $keys);

将返回:

Array
(
    [0] => 'john'
)

基本上我需要以最快的方式来做到这一点。

2 个答案:

答案 0 :(得分:3)

您可以使用 array_keys 生成新的数字数组。

array_diff($array1, array_keys($array2))

答案 1 :(得分:1)

您可以使用array_flip和array_diff的组合进行比较。 Array_flip将生成所有键值和值键。