Page 1 sur 1

trouver le caractère le plus présent dans une chaine ou un tableau

Posté : 10 déc. 2015, 20:35
par rdm
Bonjour au addicts du php !

Voilà, je bloque sur mon problème depuis un moment et je n'arrive pas à m'en sortir...seul.

-> J'obtiens en sortie une série de chiffres dont le nombre peut varier
Je souhaiterais pouvoir extraire de la liste le caractère le plus présent.
Si plusieurs caractères différents sont représentés le même nombre de fois, privilégier celui qui apparait en premier)

J'ai bien pensé à plusieurs fonctions comme array_intersect(), les variables dynamiques, levenshtein() et même similar_text() ...
mais je n'y arrive pas...
--------------
exemple de données récupérées :
$output = "1 1 2 1 3 52"
et je souhaiterais que le script me retourne : 1
--------------
exemple de données récupérées :
$output = "3 1 1 75 2 2"
et je souhaiterais que le script me retourne : 1
--------------
exemple de données récupérées :
$output = "7 7 1"
et je souhaiterais que le script me retourne : 7


Merci de votre aide et soutien !!! :D

Re: trouver le caractère le plus présent dans une chaine ou un tableau

Posté : 11 déc. 2015, 11:12
par Spols
hello,

sans avoir tester, je verrai bien un
array_count_values(explode(' ',$output))
et un check si il y a égalité
en cas d'égalité vérifier avec strpos

Et au passage je ferai quelque test pour voir comment réagi la fonction count_values, si ca se trouve elle classe dans l'ordre trouvé, donc une recherche de l'index de la première valeur max pourrait suffire.

Voir aussi si tes chaines sont très longue, niveau performance.

Re: trouver le caractère le plus présent dans une chaine ou un tableau

Posté : 11 déc. 2015, 21:10
par rdm
Salut Spols,

et merci à toi maître de la doc php !

Je ne connaissais pas array_count_values
https://secure.php.net/manual/fr/functi ... values.php

C'est tout a fait ce qu'il me faut !
ainsi je peux compter combien de fois un caractère apparait dans un tableau, c'est génial.

Il me reste maintenant à voir comment faire une
recherche de l'index de la première valeur max


En tout cas Merci beaucoup et pas de soucis de performances, mes script sont de modeste instructions :oops:

Re: trouver le caractère le plus présent dans une chaine ou un tableau

Posté : 11 déc. 2015, 21:56
par Spols
Si array_count_values fonctionne comme je le pense :
$array = array_count_values(explode(' ',$output));
$char_max = array_search(max($array),$array);
Ça a des chances de marcher

Re: trouver le caractère le plus présent dans une chaine ou un tableau

Posté : 12 déc. 2015, 10:42
par rdm
Bonjour,

Je passe le sujet en résolu, car tes lignes de code et ces fonctions sont tout a fait ce que je cherchais !
Mais je méconnaissais la force de php. Méa culpa :mrgreen:

Merci pour ton aide Spols.