根据列值删除数组中的重复项

时间:2013-10-07 07:40:46

标签: php arrays

我需要一些帮助。我有以下数组:

$result = array(
    0 => array('a'=>1,'b'=>'data1'),
    1 => array('a'=>2,'b'=>'data2'),
    2 => array('a'=>1,'b'=>'data3'),
);

我想通过比较列' a'的值来删除重复的行。预期的输出应为:

array(
    0 => array('a'=>1,'b'=>'data1'),
    1 => array('a'=>2,'b'=>'data2'),
);

或者:

array(
    1 => array('a'=>2,'b'=>'data2'),
    2 => array('a'=>1,'b'=>'data3'),
);

有一种简单的方法吗?

1 个答案:

答案 0 :(得分:13)

您可以使用array_map()创建字段a的所有可能值的小数组,使用array_unique()从中获取所有唯一值,然后使用{{将其与原始数组相交3}}

$output = array_intersect_key(
    $result, 
    array_unique(array_map(function($item) {
        return $item['a'];
    }, $result))
);

或者,自5.5:

$output = array_intersect_key($result, array_unique(array_column($result, 'a')));