Как удалить массив с одинаковыми значениями в многомерном массиве 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]);
    } 
}
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
Zelo Москва
от 130 000 руб.
Amigoweb Магнитогорск
от 40 000 до 70 000 руб.
АКМЭ сервис Санкт-Петербург
от 110 000 руб.