Page 1 sur 1

Trouver des doublons et trier une chaîne de chiffres

Posté : 03 oct. 2011, 15:24
par bboynono
Bonjour à tous,
voila mon problème, j'ai eu chaîne résultat de ce type:

$resultat = "12 45 1 12 23 5 5 12"


Et je voudrai obtenir un tri croissant de ces nombres selon le nombre de fois ou il apparaissent.
Exemple pour $resultat:

12 (3 fois), 5 (2 fois), 1, 23, 45

Merci de votre aide

Re: Trouver des doublons et trier une chaîne de chiffres

Posté : 03 oct. 2011, 15:44
par macgawel
Bonjour.

array_count_values devrait faire ton bonheur :wink:

Re: Trouver des doublons et trier une chaîne de chiffres

Posté : 03 oct. 2011, 15:56
par bboynono
Merci pour ta réponse mais je suis novice en php.
J'essaye :

<?php
$resultat = "12 45 1 12 23 5 5 12"
$decouper = explode(" ", $resultat);
$tri = array_count_values($decouper);

echo $tri;

?>

ça ne marche pas ???
Merci pour ta réponse

Re: Trouver des doublons et trier une chaîne de chiffres

Posté : 03 oct. 2011, 16:01
par bboynono
Et puis, un autre facteur, la valeur $resultat change.
Merci pour votre réponse car je suis vraiment embété.

Re: Trouver des doublons et trier une chaîne de chiffres

Posté : 03 oct. 2011, 16:16
par Mazarini
C'est gentil le "Ca ne marche pas" mais pas très explicite.

Je te conseille de lire la doc :http://php.net/manual/fr/function.array ... values.php
Au moins le premier exemple.

Re: Trouver des doublons et trier une chaîne de chiffres

Posté : 03 oct. 2011, 16:20
par macgawel
ça ne marche pas ???
C'est un peu court...

- Plantage ? Quel est le message d'erreur ?
- Ca fonctionne mais le résultat ne correspond pas à celui attendu ?
- Autre - préciser...

Je lis le manuel :
array array_count_values ( array $input )
Retourne un tableau contenant les valeurs du tableau input comme clés et leur fréquence comme valeurs.
Si ça retourne un tableau, comme echo attend une chaîne ça ne risque pas de fonctionner #-o

Ce qu'il faut faire :
1. Transformer ta chaîne en tableau (tu fais ça bien).
2. Utiliserarray_count_values pour récupérer un tableau qui contient "les valeurs du tableau input comme clés et leur fréquence comme valeurs".
Tu peux faire un print_r($resultat) pour voir comment le tableau de sortie est constitué.
3. Il faudra ensuite le trier. Pour ça, tu peux utiliser arsort() pour trier le tableau suivant l'ordre décroissant des valeurs.
4. Il ne te restera plus qu'à utiliser le tableau...Et là, ça dépend de ce que tu veux faire !

Re: Trouver des doublons et trier une chaîne de chiffres

Posté : 03 oct. 2011, 17:23
par bboynono
Merci pour vos réponse, mais je ny arrive toujours pas.
Voila mon script:
<?php
$leschiffres = "12,21,21,1,1,5,6,1,5";
$resultat = array($leschiffres);
$tri = array_count_values($resultat);
print_r($tri);

?> 
qui me donne :

Code : Tout sélectionner

Array ( [12,21,21,1,1,5,6,1,5] => 1 )
et je voudrai :

Code : Tout sélectionner

1 (3 fois) 5 (2 fois) 6 (1 fois) 12 (1 fois) 21 (1 fois)
Désolé d'être aussi nul, je débute.
Merci pour votre réponse

Re: Trouver des doublons et trier une chaîne de chiffres

Posté : 03 oct. 2011, 17:36
par soycd
T'as oublié l'explode :wink:
$lesChiffres= explode(',', '12,21,21,1,1,5,6,1,5');
$tri = array_count_values($lesChiffres);
foreach( $tri as $chiffre => $occurence )
    echo $chiffre . ' => ' . $occurence . ' fois' . "\n";
array() sert à définir un ... array :mrgreen:
$lesChiffres = array(12,21,21,1,1,5,6,1,5); //Les quotes ne sont pas nécessaires pour des numériques

Re: Trouver des doublons et trier une chaîne de chiffres

Posté : 04 oct. 2011, 16:17
par bboynono
Merci beaucoup, ça marche !!!