Como remover valores duplicados de um array em PHP
Veja como usar array_unique e como remover duplicidades de arrays associativos por um campo específico.
Array simples
$valores = ['A', 'B', 'A', 'C', 'B'];
$unicos = array_values(array_unique($valores));
print_r($unicos);
// ['A', 'B', 'C']
array_values() é opcional, mas reorganiza os índices depois da remoção.
Array associativo por campo
Para objetos representados como arrays, monte um índice pela chave que define a unicidade.
$usuarios = [
['id' => 1, 'email' => 'ana@email.com'],
['id' => 2, 'email' => 'joao@email.com'],
['id' => 3, 'email' => 'ana@email.com'],
];
$porEmail = [];
foreach ($usuarios as $usuario) {
$porEmail[$usuario['email']] = $usuario;
}
$usuariosUnicos = array_values($porEmail);
Nesse exemplo, quando o e-mail se repete, o último registro substitui o anterior.
Manter o primeiro registro
$porEmail = [];
foreach ($usuarios as $usuario) {
if (!isset($porEmail[$usuario['email']])) {
$porEmail[$usuario['email']] = $usuario;
}
}
Defina o que significa duplicado
Importante: duplicidade pode ser por ID, e-mail, CPF ou uma combinação de campos. A regra deve ser definida antes do código.
Assuntos:array_uniqueduplicadosarray