我需要一些帮助。我有以下数组:
$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'),
);
有一种简单的方法吗?
答案 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')));