Disons que j'ai un tableau de n éléments (nombres ou mots), je veux trouver tous les éléments qui se produisent plus d'une fois dans le tableau. Quelle est l'approche la plus efficace pour ce faire en termes de performance? PS: Je peux trier le tableau en premier, mais seulement si cela n'affecte pas beaucoup la performance totale. Aussi, bien que ce soit principalement php, je voudrais connaître un algorithme ou une logique qui peut être implémenté sur d'autres plateformes aussi.Comment trouver les éléments répétés dans un tableau?
Répondre
Vous pouvez utiliser array_count_values et array_filter
$array = array(1, "hello", 1, "world", "hello");
$new=array_filter(array_count_values($array),'custom_filter');
print_r($new);
function custom_filter($val)
{
return $val > 1;
}
sortie
Array
(
[1] => 2
[hello] => 2
)
Vous pouvez ajouter 'array_filter', comme:' array_filter (array_count_values ($ array), function ($ val) { \t return $ val> 1; }); ' – Yoshi
Pas besoin de créer une fonction pour cela, vous peut simplement utiliser 'create_function()' pour créer un callable qui est automatiquement détruit après utilisation. Le seul besoin de créer une fonction entièrement fonctionnelle est si vous avez besoin d'appeler autant de fois, de différentes parties du code, etc. Les fonctions Python lambda me manquent, en PHP ..) – redShadow
$lookup = array();
foreach($array as $v) {
if (!isset($lookup[$v]))
$lookup[$v] = false;
else if ($lookup[$v] == false) {
echo "Duplicate $v\n";
$lookup[$v] = true;
}
}
Espérons que cela fonctionne
array_unique(array_diff($inputArray, array_unique($inputArray)));
Amour à coder dans Oneline: – Sreeraj
Il y a une fonction array_count_values() fournie par PHP lui-même.
Il fait plus que ce que vous avez besoin, mais devrait être assez rapide car il est compilé dans ..
Ensuite, bien sûr, vous avez besoin de filtrer le résultat pour les clés dont la valeur est> 1.
EDIT
Si vous voulez en une ligne:
$a = array('a','b','c','a','a','b','d','e');
array_keys(array_filter(array_count_values($a), create_function('$x', 'return $x>1;')));
// array (0 => 'a', 1 => 'b');
- 1. Affichage des éléments répétés dans un GridView
- 2. Vérifier les éléments répétés tableau PHP (sinon vide)
- 3. motifs répétés Trouver dans R
- 4. Trouver les deux éléments récurrents dans un tableau donné
- 5. Comment obtenir seulement des enregistrements répétés dans un tableau?
- 6. Permutations d'un tableau où les éléments sont répétés un certain nombre de fois
- 7. Comment trouver les mots répétés d'une cellule dans SQL
- 8. Array éléments répétés
- 9. algorithme pour trouver les trois éléments majoritaires dans un tableau
- 10. comment vérifier les éléments répétés dans une séquence de chaînes/tableau?
- 11. Pour trouver les 3 premiers nombres maximum répétés dans un tableau d'entiers
- 12. Comment sélectionner des éléments distincts lorsqu'ils apparaissent répétés dans un tableau? (T-SQL)
- 13. Comment trouver certains éléments XML dans un tableau?
- 14. comment trouver et modifier plusieurs éléments dans un tableau?
- 15. Trouver des éléments entourant un élément dans un tableau
- 16. Répéteur détruire des éléments répétés
- 17. comment analyser des éléments répétés avec nokogiri
- 18. Supprimer des éléments du tableau qui sont répétés
- 19. comptage répété des éléments dans un tableau
- 20. éléments répétés dans le ListView (photos)
- 21. éléments répétés de suppression Matlab
- 22. Éléments répétés dans une ArrayList (java)
- 23. Ruby: 1.8.7: Comment trouver les index dans un tableau où les éléments ne sont pas nuls?
- 24. Trouver les éléments communs dans un fichier
- 25. Obtenir toutes les clés pour les éléments répétés correspondant
- 26. trouver des éléments sommant à s dans un tableau
- 27. Trouver connectés éléments distincts dans un tableau à deux dimensions
- 28. Trouver des éléments dans un tableau de hachages
- 29. SQL Server - Tables liées, éléments répétés
- 30. algorithme pour trouver ajoutés/éléments supprimés dans un tableau
trie le tableau d'abord une option? – jBit
performances dépend de la longueur de la matrice et aussi probablement sur la fréquence des doublons. –
duplication possible de [occurrences de Couting de chaque valeur dans un tableau] (http://stackoverflow.com/questions/4872835/couting-occurrences-of-each-value-in-an-array) – Gordon