Je travaille avec un tableau unidimensionnel en PHP. Je voudrais détecter la présence de valeurs en double, puis compter le nombre de valeurs en double et sortir les résultats. Par exemple, étant donné le tableau suivant:
$array = array('apple', 'orange', 'pear', 'banana', 'apple',
'pear', 'kiwi', 'kiwi', 'kiwi');
Je souhaite imprimer:
apple (2)
orange
pear (2)
banana
kiwi (3)
Un conseil pour aborder ce problème?
Merci.
Mike
la source
array_unique($array, SORT_REGULAR)
oblige PHP à vérifier les éléments normalement sans changer de type, mais c'est une comparaison vague. Ainsi, différentes instances d'une classe avec le même contenu seront uniques.la source
return array_values(array_unique(array_diff_key($a, array_unique($a))));
Vous pouvez essayer de transformer ce tableau en un tableau associatif avec les fruits comme clés et le nombre d'occurrences comme valeurs. Un peu long, mais ça ressemble à:
la source
array_count_values
Pour se débarrasser de l'utilisation
array_unique()
. Pour détecter si vous avez une utilisationcount(array_unique())
et comparer àcount($array)
.la source
Les fourrer dans un
map
(pseudocode)la source
Peut-être quelque chose comme ça (code non testé mais devrait vous donner une idée)?
Ensuite, vous obtiendrez un nouveau tableau avec les valeurs sous forme de clés et leur valeur correspond au nombre de fois où ils ont existé dans le tableau d'origine.
la source
array_count_values
la source
Je n'ai pas trouvé la réponse que je cherchais, alors j'ai écrit cette fonction. Cela créera un tableau qui ne contiendra que les doublons entre les deux tableaux, mais n'imprimera pas le nombre de fois où un élément est dupliqué, donc cela ne répond pas directement à la question, mais j'espère que cela aidera quelqu'un dans ma situation.
Les sorties:
la source
Une méthode simple:
la source