Page 1 sur 1

[R] Compter les occurences dans une liste

Posté : mer. 22 juil. 2015 17:14
par PALANDRE
Salut !

Alors voilà mon problème, j'ai une ligne du genre :

RH002&RH002&RH005&

Je la mets en tableau comme cela :

Code : Tout sélectionner

Global $tableau_des_articles = StringRegExp($tableau_des_donnees_a_importer[1][5], '(.*?)&', 3)
 
$tableau_des_donnees_a_importer[1][5] contient la ligne.

Mon but serais que $tableau_des_articles[$i][0] corresponde au nom de l'objet, par exemple RH002, et $tableau_des_articles[$i][1] au nombre de fois où cet article apparait.

Ainsi pour cet exemple(RH002&RH002&RH005&), on aurait
$tableau_des_articles[0][0] = "RH002"
$tableau_des_articles[0][1] = 2
$tableau_des_articles[1][0] = "RH005"
$tableau_des_articles[1][1] = 1

Du coup il me faudrait une solution pour parcourir tous le tableau et qu'il en refasse un et s'il rencontre une nouvelle occurence, la supprimer et ajouter 1 à la quantité.

Merci d'avance les gars !

Re: [..] Compter les occurences dans une liste

Posté : jeu. 23 juil. 2015 09:33
par jguinch
Il faut d'abord, avoir un tableau contenant la liste des éléments sans doublons.
Ensuite, pour chaque élément, compter le nombre d’occurrences présentes dans la chaîne (StringRegExp)
Ex :
► Afficher le texte

Re: [..] Compter les occurences dans une liste

Posté : jeu. 23 juil. 2015 09:34
par mikell
_ArrayUnique sur le tableau résultat du regex
Puis création d'une array de taille x2 ou d'une array 2D (mieux adaptée dans ce cas)
Boucle dans le tableau1 pour compter les occurences de chaque élément dans la string de départ

Code : Tout sélectionner

$str = "RH002&RH002&RH005&"
StringReplace($str, "RH002", "RH002")
$occurences = @extended
Msgbox(0,"", $occurences)
Ensuite c'est de la simple construction d'array

Re: [..] Compter les occurences dans une liste

Posté : jeu. 23 juil. 2015 09:39
par jguinch
@mikell : je ne suis pas parti sur StringReplace pour plus de sécurité au cas où la chaîne contiennent des trucs du genre RH002&DRH002&

Re: [..] Compter les occurences dans une liste

Posté : jeu. 23 juil. 2015 11:53
par mikell
Ah oui, hum pas bien réveillé
Dans ce cas on peut utiliser un srer sur le même principe, en rajoutant \Q-\E tant qu'on y est, des fois qu'un objet s'appelle "canapé d'angle (bleu)" :mrgreen:
► Afficher le texte

Re: [..] Compter les occurences dans une liste

Posté : ven. 24 juil. 2015 16:44
par PALANDRE
Merci les gars ! Vous pesez dans le game !