2016-04-16 49 views
1

2つの配列を持っているので、それらを電子メールキーでフィルタリングしたい。この多次元配列をarray_diffと比較する

ARRAY1

array (size=5) 
    0 => 
    array (size=3) 
     'name' => string 'Client 1' (length=8) 
     'email' => string '[email protected]' (length=17) 
    1 => 
    array (size=3) 
     'name' => string 'Client 2' (length=8) 
     'email' => string '[email protected]' (length=17) 

ARRAY2

array (size=3) 
    0 => 
     array (size=4) 
     'name' => string 'Client 3' (length=8) 
     'email' => string '[email protected]' (length=17) 
     'role_id' => float 3 
    1 => 
     array (size=4) 
     'name' => string 'Client 6' (length=8) 
     'email' => string '[email protected]' (length=17) 
     'role_id' => float 2 
    2 => 
     array (size=4) 
     'name' => string 'Client 7' (length=8) 
     'email' => string '[email protected]' (length=17) 
     'role_id' => float 3 

のように私は、同様の電子メールアイテムをフィルタします。

array (size=2) 
    0 => 
     array (size=4) 
     'name' => string 'Client 6' (length=8) 
     'email' => string '[email protected]' (length=17) 
     'role_id' => float 2 
    1 => 
     array (size=4) 
     'name' => string 'Client 7' (length=8) 
     'email' => string '[email protected]' (length=17) 
     'role_id' => float 3 

答えて

2

あなたはarray_udiffを使用することができますどのように以下のように返すことがあります。

最初の配列をフィルタリングする場合は、指定されたコールバックを使用してarray_udiffに渡される他の配列の要素とその要素を比較します。コールバックがペアに対して0を返すと、その要素は結果から削除されます。

$result = array_udiff($arr2, $arr1, function ($a, $b) { 
    return strcmp($a['email'], $b['email']); 
}); 
+0

ya、その作業、ありがとうございました! –