CodePráticov3.3.0
PHP

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.