Как удалить массив с одинаковыми значениями в многомерном массиве PHP?

$array = array(
  'item-1' => array(
          'a' => 'Повторяющееся значение 1',
          'b' => 'xx1',
          'c' => 'xx2'
  ),
  'item-2' => array(
          'a' => 'Повторяющееся значение 1',
          'b' => 'xx3',
          'c' => 'xx4'
  ),
  'item-3' => array(
          'a' => 'Повторяющееся значение 2',
          'b' => 'xx5',
          'c' => 'xx6'
  ),
  'item-4' => array(
          'a' => 'Повторяющееся значение 2',
          'b' => 'xx7',
          'c' => 'xx8'
  )
);


Как исключить элементы, в которых повторяются 'a'?
Нужно получить такой результат:

array(
    'item-1' => array(
        'a' => 'Повторяющееся значение 1',
        'b' => 'xx1',
        'c' => 'xx2'
    )
    'item-3' => array(
        'a' => 'Повторяющееся значение 2',
        'b' => 'xx5',
        'c' => 'xx6'
    )
);


Благодарю всех откликнувшихся:)
  • Вопрос задан
  • 140 просмотров
Пригласить эксперта
Ответы на вопрос 4
NikkyNick1
@NikkyNick1
$array = array_map("unserialize", array_unique(array_map("serialize", $array)));

https://ideone.com/0EETQs
Ответ написан
@FanatPHP
В цикле
Любые операции с массивами делаются вцикле.
Ответ написан
@green_goo
$tmp = [];
foreach ($array as $k => $v) {
	if (array_key_exists($v['a'], $tmp)) {
		unset($array[$k]);
	} else {
		$tmp[$v['a']] = true;
	}
}
var_dump($array);
Ответ написан
amlvovich
@amlvovich Автор вопроса
Решил сам:
foreach(array_reverse($array, true) as $id => $item) {
    if (in_array($item['a'], array_column(array_slice($array, $id+1), 'a'))) {
         unset($array[$id]);
    } 
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы