Bonsoir!
Je viens de pondre ce code assez velu et qui fonctionne parfaitement à un détail prés : il est bien trop lourd et au lieu de faire les 365 boucles de l'année, j'atteins le temps d’exécution maximal au bout d'une dizaine de boucles principales.
Le code est fonctionnel par un simple copier/coller :
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
 
<?php
$année = '2013';
$mois = '11';
$jour = '08';
 
$m01 = 60;
$m02 = 80;
$m03 = 130;
$m04 = 150;
$m05 = 180;
$m06 = 200;
$m07 = 210;
$m08 = 170;
$m09 = 140;
$m10 = 90;
$m11 = 60;
$m12 = 50;
 
$date_actuelle_debut = date("$année-01-01");
$date_actuelle_fin = date("$année-12-31");
$date_debut_final = date("Y-m-d", strtotime($date_actuelle_debut)); 
$date_fin_final = date("Y-m-d", strtotime($date_actuelle_fin));
$ma_Date_final = $date_debut_final;
 
while ($ma_Date_final <=  $date_fin_final){
 
  $date_explode_final = explode( '-',$ma_Date_final);  //[0] = année ------ [1] = mois -------- [2] = jour  
 
  //debordement aux estremes janvier et decembre pour la connection
  if($mois==01){ $mois01 = $m01; $mois02 = $m02; $mois03 = $m03; $mois04 = $m04; $mois05 = $m05; $mois06 = $m06; $mois07 = $m07; $mois08 = $m08; $mois09 = $m09; $mois10 = $m10; $mois11 = $m11; $mois12 = $m01; 
  }elseif($mois==12){ $mois01 = $m12; $mois02 = $m02; $mois03 = $m03; $mois04 = $m04; $mois05 = $m05; $mois06 = $m06; $mois07 = $m07; $mois08 = $m08; $mois09 = $m09; $mois10 = $m10; $mois11 = $m11; $mois12 = $m12;
  }else{ $mois01 = $m01; $mois02 = $m02; $mois03 = $m03; $mois04 = $m04; $mois05 = $m05; $mois06 = $m06; $mois07 = $m07; $mois08 = $m08; $mois09 = $m09; $mois10 = $m10; $mois11 = $m11; $mois12 = $m12; } 
 
  //*******************************************TROISIEME PASSE (VJ'')******************************************************************************
 
  $date_actuelle2 = date("$date_explode_final[0]-$date_explode_final[1]-$date_explode_final[2]");
  $date_debut2 = date("Y-m-d", strtotime($date_actuelle2.'-7 day')); // 7 jours avant 
  $date_fin2 = date("Y-m-d", strtotime($date_actuelle2.'+7 day')); // 7 jours apres
  $ma_Date2 = $date_debut2;
  $troisieme_passe = 0;
  $k = 0;
 
  while ($ma_Date2 <=  $date_fin2){
 
    $date_explode = explode( '-',$ma_Date2);  //[0] = année ------ [1] = mois -------- [2] = jour 
    $nb_Jour0 = date('t',mktime(0, 0, 0, $date_explode[1], $date_explode[2], $date_explode[0])); //nombre de jour dans le mois
    $valeur_Mois0 = ${'mois'.$date_explode[1]}; //Valeur donnée dans le mois
    $seconde_passe = 0;
 
    for ($j = 1; $j <= date('t',mktime(0, 0, 0, $date_explode[1], $date_explode[2], $date_explode[0])); $j++){
 
          $date_actuelle = date("$date_explode[0]-$date_explode[1]-$j");
          $date_debut = date("Y-m-d", strtotime($date_actuelle.'-15 day')); // 15 jours avant 
          $date_fin = date("Y-m-d", strtotime($date_actuelle.'+15 day')); // 15 jours apres
 
          $ma_Date = $date_debut;
          $premiere_passe = 0;
          $i = 0;
 
          while ($ma_Date <=  $date_fin){
 
              $nb_Jour = date('t',mktime(0, 0, 0, date(date("m",strtotime($ma_Date))), 1, date(date("m",strtotime($ma_Date))))); //nombre de jour dans le mois
              $num_Mois = date("m",strtotime($ma_Date)); //numéro de mois
              $valeur_Mois = ${'mois'.$num_Mois}; //Valeur donnée dans le mois
              $prod_Mois = $valeur_Mois / $nb_Jour; //Valeur donnée par jour
              $premiere_passe =  $premiere_passe + $prod_Mois; //incrementation des Valeurs données par jour
              $i = $i + 1; //compteur d'occurences
              $ma_Date = date("Y-m-d", strtotime("+1 day", strtotime($ma_Date."-01" ))); //rajout d'un jour dans la boucle   
              }
          $premiere_passe_final = $premiere_passe / $i; //calcul de la moyenne
          $tableau_premiere_passe[] =  $premiere_passe_final; //ajout dans tableau
          $seconde_passe = $seconde_passe + $premiere_passe_final; //ajout pour total
      }
 
    $seconde_passe_final = $tableau_premiere_passe[$date_explode[2]-1] - ($seconde_passe - $valeur_Mois0) / $nb_Jour0;
    $troisieme_passe = $troisieme_passe + $seconde_passe_final; //ajout pour total
    $k = $k + 1; //compteur d'occurences  
    $tableau_premiere_passe = array(); //réinitialisation du tableau
 
    $ma_Date2 = date("Y-m-d", strtotime("+1 day", strtotime($ma_Date2."-01" ))); //rajout d'un jour dans la boucle 
  }
 
  $troisieme_passe_final = $troisieme_passe / $k; //calcul de la moyenne
  echo $troisieme_passe_final;
  echo "<br>"; 
  $ma_Date_final = date("Y-m-d", strtotime("+1 day", strtotime($ma_Date_final."-01" ))); //rajout d'un jour dans la boucle 
}
 
 
?>
Voyez vous un moyen de l'optimiser drastiquement? ET oui, je suis bien obligé de faire ces boucles dans les boucles! C'est le calcul minimal!

Merci d'avance!