Estou trabalhando com uma matriz unidimensional em PHP. Gostaria de detectar a presença de valores duplicados, contar o número de valores duplicados e enviar os resultados. Por exemplo, dada a seguinte matriz:
$array = array('apple', 'orange', 'pear', 'banana', 'apple',
'pear', 'kiwi', 'kiwi', 'kiwi');
Eu gostaria de imprimir:
apple (2)
orange
pear (2)
banana
kiwi (3)
Algum conselho sobre como abordar este problema?
Obrigado.
Mike
fonte
array_unique($array, SORT_REGULAR)
força o PHP a verificar os elementos normalmente sem alterar o tipo, mas é uma comparação vaga. Assim, diferentes instâncias de uma classe com o mesmo conteúdo serão exclusivas.fonte
return array_values(array_unique(array_diff_key($a, array_unique($a))));
Você pode tentar transformar esse array em um array associativo com as frutas como chaves e o número de ocorrências como valores. Um pouco prolixo, mas parece:
fonte
array_count_values
Para se livrar, use
array_unique()
. Para detectar se tem alguma utilidadecount(array_unique())
e compararcount($array)
.fonte
Coloque-os em um
map
(pseudocódigo)fonte
Talvez algo assim (código não testado, mas deve dar uma ideia)?
Em seguida, você obterá um novo array com os valores como chaves e seu valor é o número de vezes que existiram no array original.
fonte
array_count_values
fonte
Não encontrei a resposta que procurava, por isso escrevi esta função. Isso criará um array que contém apenas as duplicatas entre os dois arrays, mas não imprimirá o número de vezes que um elemento é duplicado, portanto, não está respondendo diretamente à pergunta, mas espero que ajude alguém na minha situação.
Saídas:
fonte
Um método simples:
fonte