2013-10-07 88 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

感謝傑克。有用。 –