2015-04-26 43 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

也可以。非常感謝。 –

相關問題