我有2个阵列然后我想通过电子邮件密钥过滤它们。喜欢这个
数组1
array (size=5)
0 =>
array (size=3)
'name' => string 'Client 1' (length=8)
'email' => string 'client1@gmail.com' (length=17)
1 =>
array (size=3)
'name' => string 'Client 2' (length=8)
'email' => string 'client2@gmail.com' (length=17)
ARRAY2
array (size=3)
0 =>
array (size=4)
'name' => string 'Client 3' (length=8)
'email' => string 'client2@gmail.com' (length=17)
'role_id' => float 3
1 =>
array (size=4)
'name' => string 'Client 6' (length=8)
'email' => string 'client6@gmail.com' (length=17)
'role_id' => float 2
2 =>
array (size=4)
'name' => string 'Client 7' (length=8)
'email' => string 'client7@gmail.com' (length=17)
'role_id' => float 3
我想过滤掉类似的电子邮件。结果如何返回如下:
array (size=2)
0 =>
array (size=4)
'name' => string 'Client 6' (length=8)
'email' => string 'client6@gmail.com' (length=17)
'role_id' => float 2
1 =>
array (size=4)
'name' => string 'Client 7' (length=8)
'email' => string 'client7@gmail.com' (length=17)
'role_id' => float 3
答案 0 :(得分:2)
您可以使用array_udiff。
如果将过滤第一个数组,则通过使用给定的回调将其元素与传递给array_udiff
的其他数组的元素进行比较。当回调为一对返回0
时,该元素将从结果中删除。
$result = array_udiff($arr2, $arr1, function ($a, $b) {
return strcmp($a['email'], $b['email']);
});