2015-04-26 42 views
2

array_diff(),它检查一个数组中的值与另一个数组中的值。然后有array_diff_key()它检查一个数组中的密钥与另一个数组中的密钥。是否有核心函数或非循环方法来检查是否有一个数组中的值不是另一个中的键,并将这些值返回给数组?该功能需要检查关联或顺序的键。array_diff检查一个数组中的值与另一个数组中的键的比较

例如为:

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' 
) 

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

+0

为什么不循环? – snickers10m

+0

另外,你尝试过什么方法? – snickers10m

回答

3

您可以使用array_keys来产生一个新的数字数组。

array_diff($array1, array_keys($array2)) 
+0

当然!凝视着我的脸。非常感谢。将在十分钟内接受。 –

+1

如果你想重新编制结果,你也可以将它包装在array_values中。 –

1

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

+0

也可以。非常感谢。 –

相关问题