Мне нужна помощь. У меня есть следующий массив:
$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'), );
Есть ли простой способ сделать это?
Вы можете создать небольшой массив из всех возможных значений поля 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')));