Bonjour à tous,

Je collecte des mesures d'un terrain. Il y a plusieurs stations et plusieurs capteurs par station.
Je dois reviser mon code PHP et notamment l'array qui doit contenir ces valeurs avant de les afficher sur un graph.

Je vais donc faire une Requête MySQL qui va etraire les données. Puis je rassemble dans un array à plusieurs niveau.

Code PHP : 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
 
while($row = $sql_result->fetch_assoc())
			{
				// Put into array the dates coming from TTN server
				$dates[$j] = $row['ttn_m_time'];
 
				// Prepare the array before label and datasets are filled.
				if(!in_array($row['id_sensor'],$sensors_id))
				{
					array_push($sensors_id,$row['id_sensor']);
				}
 
				$data[$row['id_station']][$row['id_sensor']]['labels'][$j] = $row['ttn_m_time'];
				$data[$row['id_station']][$row['id_sensor']]['datasets']['data'][$j] = 0.1;
				echo $j;
				$j++;
 
			}
print_r($data) m'affiche ceci
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
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
 
Array
(
    [1] => Array
        (
            [1] => Array
                (
                    [labels] => Array
                        (
                            [0] => 2020-11-05 00:50:06
                            [2] => 2020-11-05 00:50:13
                            [4] => 2020-11-05 00:50:26
                            [6] => 2020-11-05 00:50:42
                            [8] => 2020-11-05 00:50:58
                            [10] => 2020-11-05 00:51:14
                            [12] => 2020-11-05 00:51:30
                            [14] => 2020-11-05 00:51:46
                        )
 
                    [datasets] => Array
                        (
                            [data] => Array
                                (
                                    [0] => 0.1
                                    [2] => 0.1
                                    [4] => 0.1
                                    [6] => 0.1
                                    [8] => 0.1
                                    [10] => 0.1
                                    [12] => 0.1
                                    [14] => 0.1
                                )
 
                        )
 
                )
 
            [4] => Array
                (
                    [labels] => Array
                        (
                            [1] => 2020-11-05 00:50:06
                            [3] => 2020-11-05 00:50:13
                            [5] => 2020-11-05 00:50:26
                            [7] => 2020-11-05 00:50:42
                            [9] => 2020-11-05 00:50:58
                            [11] => 2020-11-05 00:51:14
                            [13] => 2020-11-05 00:51:30
                            [15] => 2020-11-05 00:51:46
                        )
 
                    [datasets] => Array
                        (
                            [data] => Array
                                (
                                    [1] => 0.1
                                    [3] => 0.1
                                    [5] => 0.1
                                    [7] => 0.1
                                    [9] => 0.1
                                    [11] => 0.1
                                    [13] => 0.1
                                    [15] => 0.1
                                )
 
                        )
 
                )
 
        )
 
)
On constate que dans labels l'index est soit impaire ou paire.
Ceci me semble normal car, il y a deux capteurs (pour le moment). Donc
n'a pas toujours la même valeur. Je pense que lorsque j'aurai trois capteur, il y aura des sauts de 3.

En soit la constreuction de la multi array et juste, sauf qu'il ne faut pas de saut de nombre. J'aimerais retravailler mon array pour qu'elle ressemble à ceci

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
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
 
Array
(
    [1] => Array
        (
            [1] => Array
                (
                    [labels] => Array
                        (
                            [0] => 2020-11-05 00:50:06
                            [1] => 2020-11-05 00:50:13
                            [2] => 2020-11-05 00:50:26
                            [3] => 2020-11-05 00:50:42
                            [4] => 2020-11-05 00:50:58
                            [5] => 2020-11-05 00:51:14
                            [6] => 2020-11-05 00:51:30
                            [7] => 2020-11-05 00:51:46
                        )
 
                    [datasets] => Array
                        (
                            [data] => Array
                                (
                                    [0] => 0.1
                                    [1] => 0.1
                                    [2] => 0.1
                                    [3] => 0.1
                                    [4] => 0.1
                                    [5] => 0.1
                                    [6] => 0.1
                                    [7] => 0.1
                                )
 
                        )
 
                )
 
            [4] => Array
                (
                    [labels] => Array
                        (
                            [0] => 2020-11-05 00:50:06
                            [1] => 2020-11-05 00:50:13
                            [2] => 2020-11-05 00:50:26
                            [3] => 2020-11-05 00:50:42
                            [4] => 2020-11-05 00:50:58
                            [5] => 2020-11-05 00:51:14
                            [6] => 2020-11-05 00:51:30
                            [7] => 2020-11-05 00:51:46
                        )
 
                    [datasets] => Array
                        (
                            [data] => Array
                                (
                                    [0] => 0.1
                                    [1] => 0.1
                                    [2] => 0.1
                                    [3] => 0.1
                                    [4] => 0.1
                                    [5] => 0.1
                                    [6] => 0.1
                                    [7] => 0.1
                                )
 
                        )
 
                )
 
        )
 
)
C'est très important que les index soient les mêmes pour un capteur.
Par exemple, pour le capteur 4
[4] => Array
les index de 'labels' et 'data', doivent coïncider, car l'index 0 est la date (pour 'labels') et la valeur (pour 'data')

Je pensais faire un foreach sur 'label' et 'data' et appliquer array_values(), mais sans succès.

Comment le feriez-vous?

Merciiii et bon week-end