Atualizado em 04 de Novembro de 2013

Como Remover Valores Duplicados do Array com PHP

Olá pessoal,

Para otimizar um Array muitas vezes temos que nos preocupar com os valores repetidos dentro do mesmo. Dependendo do tipo de operação que estamos realizando ter valores duplicados dentro do Array pode ser desnecessários, implicando em um consumo maior de memória por parte do servidor que esta executando o script.

Então para resolver este problema temos o comando array_unique que remove valores duplicados do array dentro do PHP, o retorno deste comando é um novo Array sem os valores duplicados.

Vamos ver um exemplo:

<?php
$array_inicial = array('Cor1' => 'Azul', 'Cor2' => 'Vermelho', 'Cor3' => 'Azul', 'Cor4' => 'Amarelo');

$array_final = array_unique($array_inicial);

 print_r($array_final);
//Resultado: Array ( [Cor1] => Azul [Cor2] => Vermelho [Cor4] => Amarelo )
?>

Observe que a chave preservada é a primeira encontrada. No exemplo acima a chave preservada foi a Cor1 removendo a segunda ocorrência.

Outro detalhe importante e que na ausência de chaves (chaves automáticas) a chave/índice será preservada.


Gostou do post, continue por dentro das dicas de programação!!! Assine a newsletter.


E isso aí pessoal, até a próxima.

Tags:  Arrays | Comandos PHP | PHP

Comentários

Sua foto do perfil

Maiko

Teria como eu fazer isso com um array de objetos? Tentei aqui, mas dá erro!

14 de Julho de 2015 - 15:37

Sua foto do perfil

Mauricio Programador

Olá Maiko,

é possível, só que antes você precisa converter seus objetos em um Array.

Para converter use:

$array = (array) $objeto;

Abraço.

20 de Julho de 2015 - 09:57

Sua foto do perfil

Tiago

Agora que me lembrei de perguntar uma coisa.
Pelo que vi, o index do array é preservado, podendo ter "pulos" nos indices:
1-> "um"
2-> "dois"
3-> "dois"
4-> "quatro"
Entao ficaria assim:
1-> "um"
2-> "dois"
4-> "quatro"

Como eu poderia ter meu array resultado, com os indices atualizados deste modo:

1-> "um"
2-> "dois"
3-> "quatro

16 de Dezembro de 2014 - 04:07

Sua foto do perfil

Mauricio Programador

Olá Tiago,

no caso do comando array_unique ele sempre irá preservar os índices dos array, se quiser reorganizar os índices use o comando array_values.

Abraço.

16 de Dezembro de 2014 - 08:52

Sua foto do perfil

Tiagofly@outlook.com

Boa explicacao!
O legal é que vc citou a diferenca de uma chave "criada" e chave/index automatico...
Para quem ta comecando em PHP isso confunde um pouco!!!

16 de Dezembro de 2014 - 03:58

NEWSLETTER

Receba dicas de programação
em seu e-mail

TWITTER

Acompanhe tudo o que rola
com Mauricio Programador

NEWSLETTER