Bonsoir à tous,
J'ai un fichier xml de valeurs que j'utilise pour faire des traitements statistiques.
à partir de ce fichier, je récupère un tableau de valeurs $data[1] en utilisant un preg_match_all, ca c'est bon
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 <valeurs> <value>1</value> <value>1.1</value> <value>1</value> <value>2</value> <value>2.1</value> <value>1.4</value> <value>4</value> <value>4.1</value> <value>2</value> <value>2</value> </valeurs>
Ce que je voudrais faire c'est compter les valeurs du tableau comprises entre des bornes (min et max) -> en fait c'est faire un tableau de fréquences pour ensuite en faire un graphique
Donc si ma réflexion est bonne, je souhaiterais en faite faire l'équivalent de ce type de requête SQL dans une boucle if
pour le moment j'ai récupérer mes valeurs que je trie par ordre croissant
Code : Sélectionner tout - Visualiser dans une fenêtre à part SELECT Count ($data[i]) From MaTable WHERE $data[i] > $intervalle_bas AND $data[i] < $intervalle_haut
Ensuite je calcule l'écart de l'intervalle ($ecart) pour récupérer chaque bornes (basse "ib" et haute "ih") des intervalles.
résultat:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 $barres = 4; sort ($data[1]); $data_min = min($data[1]); $data_max= max($data[1]); //Découpage intervalles selon nb. de barres $ecart = floatval(($data_max - $data_min) / $barres); $intervalles = array(); for ($it = ($data_min + $ecart); $it <= ($data_max + $ecart) + 1; $it = $it + $ecart) { $intervalles[] = $it; print $it; } for ($i = 0; $i <= $barres; $i++) { $ib = $intervalles[$i] - $ecart; $ih = $intervalles[$i]; echo "<!-- ib pour i=".$i." : ".$ib."-->\n"; echo "<!-- ih pour i=".$i." : ".$ih."-->\n"; }
ce que je voudrais obtenir c'est, si possible, un tableau à 2 colonnes (borne haute et effectif) de ce genre (désolé pour la syntaxe)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 <!-- ib pour i=0 : 1--> <!-- ih pour i=0 : 1.775--> <!-- ib pour i=1 : 1.775--> <!-- ih pour i=1 : 2.55--> <!-- ib pour i=2 : 2.55--> <!-- ih pour i=2 : 3.325--> <!-- ib pour i=3 : 3.325--> <!-- ih pour i=3 : 4.1--> <!-- ib pour i=4 : 4.1--> <!-- ih pour i=4 : 4.875-->
mais là je bloque, je ne sais pas trop comment faire dans ma boucle pour compter le nombres de valeurs comprises entre $ib[i] et $ih[i] ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 1.775 , 4 2.55 , 4 3.325 , 0 4.1 , 1 4.875 , 1
Il y aurait peut être la fonction array_filter() à adapter mais je ne vois pas trop comment l'utiliser
Après je ne veux pas filtrer mes données, ce qui m'intéresse c'est vraiment de compter les valeurs comprises dans un intervalle...
une idée ? une piste pour m'aider ?
Merci beaucoup
Partager