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

rdm
Invité n'ayant pas de compte PHPfrance

10 déc. 2015, 20:35

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

Mammouth du PHP | 1967 Messages

11 déc. 2015, 11:12

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.
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

rdm
Invité n'ayant pas de compte PHPfrance

11 déc. 2015, 21:10

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:

Mammouth du PHP | 1967 Messages

11 déc. 2015, 21:56

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
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

rdm
Invité n'ayant pas de compte PHPfrance

12 déc. 2015, 10:42

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.