Identificando os valores duplicados no array

Vamos a mais um desafio. Hoje eu estava com o seguinte problema: eu tinha uma lista de títulos vindos de um link externo e uma lista de títulos vindos do wordpress. O problema é que eu precisava encontrar os títulos duplicados no wordpress e como fazer isso?

Eu vou colocar um exemplo aqui. Esta é a lista vindo do link externo:

<?php
	$link_externo = array(
		"Aaron Neville",
		"Adele",
		"Al Green",
		"Al Jarreau",
		"Alicia Keys",
		"Amy Winehouse",
		"Aretha Franklin",
		"Barry White",
		"Beyoncé",
		"Billy Paul",
		"Bobby Womack",
	);
?>

E este é o conteúdo do WordPress (cheio de títulos duplicados):

<?php
	$wordpress = array(
		"Aaron Neville",
		"Adele",
		"Adele",
		"Al Green",
		"Al Jarreau",
		"Alicia Keys",
		"Alicia Keys",
		"Alicia Keys",
		"Amy Winehouse",
		"Aretha Franklin",
		"Barry White",
		"Beyoncé",
		"Beyoncé",
		"Billy Paul",
		"Bobby Womack",
	);
?>

Primeiro, recorri ao array_search:

<?php
	foreach($link_externo as $le){
		echo $le.' - '.array_search($le,$wordpress)."<br>";
	}
?>

Explicação:
O foreach varre os títulos do link externo e a cada iteração, procura o seu equivalente na lista de títulos do wordpress.

O Resultado:
Aaron Neville – 0
Adele – 1
Al Green – 3
Al Jarreau – 4
Alicia Keys – 5
Amy Winehouse – 8
Aretha Franklin – 9
Barry White – 10
Beyoncé – 11
Billy Paul – 13
Bobby Womack – 14

Nota-se que o array_search retorna o primeiro ID do valor encontrado. Exemplo: Adele tem dois ID’s, 1 e 3. O ID retornado é o primeiro.

Essa função não atendeu as minhas expectativa. Vamos ao próximo.

Tentei o array_diff:

<?php	
	var_dump(array_diff($link_externo,$wordpress));
?>

E o mesmo me retornou:
array
empty

E mais uma vez a minha expectativa não foi atendida. Ai veio a luz: array_count_values!

<?php
	foreach(array_count_values($wordpress) as $lista => $qtd){
		echo $lista." = ".$qtd."<br>";
	}
?>

A função conta as frequências de cada título da lista do wordpress. Com isso, eu consigo saber o quais estão repetidos ou não.
Resultado:
Aaron Neville = 1
Adele = 2
Al Green = 1
Al Jarreau = 1
Alicia Keys = 3
Amy Winehouse = 1
Aretha Franklin = 1
Barry White = 1
Beyoncé = 2
Billy Paul = 1
Bobby Womack = 1

Referências:
array_search
array_diff
array_count_values

Anúncios

Um comentário em “Identificando os valores duplicados no array

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s