-2

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

$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'),
);

有没有一种简单的方法可以做到这一点?

4

1 回答 1

13

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

$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')));
于 2013-10-07T08:12:03.347 回答