array_unique для многомерных массивов

$unique = array_unique($array);

Функция array_unique возвращает массив без повторяющихся значений, она работает и с многомерными массивами. Очисть массивы от дублей можно следующими способами:

Способ №1

$array = array_unique($array, SORT_REGULAR);
PHP

Способ №2

$array = array_map('unserialize', array_unique(array_map('serialize', $array)));
PHP

Второй способ чувствителен к типу данных, т.е. 0 => 1, и 0 => '1', будут считаться разными.

Удаление дубликатов по одному ключу

function array_unique_key($array, $key) { 
	$tmp = $key_array = array(); 
	$i = 0; 

	foreach($array as $val) { 
		if (!in_array($val[$key], $key_array)) { 
			$key_array[$i] = $val[$key]; 
			$tmp[$i] = $val; 
		} 
		$i++; 
	} 
	return $tmp; 
}
PHP

Например, в массиве нужно удалить дубликаты с одинаковым id, другие элементы массива не важны.

$test = array( 
	array(
		'id' => 1,
		'name' => 'Диски Sparco',
		'price' => 5000,
	),
	array(
		'id' => 1,
		'name' => 'Диски Sparco',
		'price' => 6000,
	), 	
	array(
		'id' => 2,
		'name' => 'Автокресло',
		'price' => 3000,
	), 

);

$test = array_unique_key($test, 'id'); 
print_r($test);
PHP

Результат

Array(
	[0] => Array(
		[id] => 1
		[name] => Диски Sparco
		[price] => 5000
	)
	[2] => Array(
		[id] => 2
		[name] => Автокресло
		[price] => 3000
	)
)
28.06.2019, обновлено 31.08.2019 350
Следующая запись RSS канал на PHP

Поделится

Другие публикации

В случаях где анонсы не заполнены, сформировать и вывести их можно несколькими способами...
Функции PHP сохраняют текст в файл в кодировке ANSI, чтобы изменить её на UTF-8 нужно к началу текста приписать...
Пример создания файла карты сайта (sitemap.xml) на PHP. Интеграция его на сайт и подключение его в robots.txt
Ниже представлен пример кода PHP для генерации YML файла по упрошенной схеме для выгрузки на Яндекс.Маркет.