2013-10-07 121 views
-3

我需要一些帮助。我有以下数组:根据列值删除数组中的重复项

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

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

回答

11

您可以使用array_map()a的所有可能值的一小阵,与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'))); 
+0

感谢杰克。有用。 –