Задать вопрос
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'),           
        );
  • Вопрос задан
  • 160 просмотров
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 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);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽