ogregor
@ogregor
арендатор vpn сервера debian

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

Здравствуйте, долго ковырялся по сети, нашел много предложений, но для моего случая не получилось решить задачу.

Есть массив:

$companywet = array(
          0 => array( 
          'companyName' => 'ООО Ваша Мама',  
          'managerName' => 'Светлана Юрьевана',
          'contactEmail' => 'sveta@ya.ru'),
            
          1 => array( 
          'companyName' => 'ООО Связьтехконсалтинг',  
          'managerName' => 'Гурова Алевтина Сергеевна',
          'contactEmail' => 'gur@ya.ru'),
            
          2 => array( 
          'companyName' => 'ООО Стройбыт',  
          'managerName' => 'Гуров Сергей Иванович',
          'contactEmail' => 'gur@ya.ru'), 
        );


Вот собственно как мне получить массив, в котором будут исключены дубликаты значений по указанному ключу.
В данном случае что то типа на входе uniqArr($companywet, 'contactEmail')
на выходе:
$companywet = array(
          0 => array( 
          'companyName' => 'ООО Ваша Мама',  
          'managerName' => 'Светлана Юрьевана',
          'contactEmail' => 'sveta@ya.ru'),
            
          1 => array( 
          'companyName' => 'ООО Связьтехконсалтинг',  
          'managerName' => 'Гурова Алевтина Сергеевна',
          'contactEmail' => 'gur@ya.ru'),           
        );
  • Вопрос задан
  • 156 просмотров
Решения вопроса 1
delphinpro
@delphinpro Куратор тега PHP
frontend developer
function uniqueArray($input, $key) {
	$exists = [];
	$result = array_filter($input, function($item) use (&$exists, $key) {
		$email = $item[$key];
		if (array_key_exists($email, $exists)) {
			return false;
		}
		$exists[$email] = true;
		return true;
	});
	return $result;
}

$companywet = array(
	0 => array( 
		'companyName' => 'ООО Ваша Мама',  
		'managerName' => 'Светлана Юрьевана',
		'contactEmail' => 'sveta@ya.ru'),
            
	1 => array( 
		'companyName' => 'ООО Связьтехконсалтинг',  
		'managerName' => 'Гурова Алевтина Сергеевна',
		'contactEmail' => 'gur@ya.ru'),
            
	2 => array( 
		'companyName' => 'ООО Стройбыт',  
		'managerName' => 'Гуров Сергей Иванович',
		'contactEmail' => 'gur@ya.ru'), 
	);

$result = uniqueArray($companywet, 'contactEmail');
var_dump($result);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы