PHP删除具有重复的特定键值的关联数组的数组

PHP删除具有重复的特定键值的关联数组的数组,php,arrays,Php,Arrays,我有一个关联数组 array(xxx) { [0]=> array(3) { ["group_id"]=>2 ["contact"]=> "foo" ["contact_email"]=> "foo@gmail.com" } [1]=> array(3) { ["group_id"]=>2 ["contact"]=> "bar" ["contact_email"]=> "bar@

我有一个关联数组

array(xxx) {
 [0]=>
   array(3) {
    ["group_id"]=>2
    ["contact"]=> "foo"
    ["contact_email"]=> "foo@gmail.com"
   }
 [1]=>
   array(3) {
    ["group_id"]=>2
    ["contact"]=> "bar"
    ["contact_email"]=> "bar@gmail.com"
   }
  [2]=>
   array(3) {
    ["group_id"]=>2
    ["contact"]=> "foobar"
    ["contact_email"]=> "bar@gmail.com"
   }
 [3]=>
   array(3) {
    ["group_id"]=>2
    ["contact"]=> "bar"
    ["contact_email"]=> "bar@gmail.com"
   }
要删除重复的阵列,请执行以下操作

array_unique( $array, SORT_REGULAR );
但是现在,我想做一些更具体的事情,只删除具有重复键值的数组(contact_email)来获得这个结果

 array(xxx) {
 [0]=>
   array(3) {
    ["group_id"]=>2
    ["contact"]=> "foo"
    ["contact_email"]=> "foo@gmail.com"
   }
 [1]=>
   array(3) {
    ["group_id"]=>2
    ["contact"]=> "bar"
    ["contact_email"]=> "bar@gmail.com"
   }
我怎么能这么做

谢谢您

通过
联系电子邮件
提取到数组并建立索引。由于不能有重复的索引,您将获得最后一次出现的索引:

$array = array_column($array, null, 'contact_email');
如果要将其重新索引回整数:

$array = array_values(array_column($array, null, 'contact_email'));
我想这会有帮助

$arr = [['contact_email' => 'a@a.com'], ['contact_email' => 'a@a.com'], ['contact_email' => 'b@a.com']];
$result = [];
array_map(function ($item) use (&$result) {
    $result[$item['contact_email']] = $item;
}, $arr);
print_r($result);

您可以使用
foreach
并通过
contact\u email

$r = [];
foreach($a as $v){
 $r[$v['contact_email']] = $v;
}
print_r(array_values($r));// reorder index

工作示例:

这是一个非常好的解决方案!非常感谢。可能重复的