Array dans un for

Résolu
Bonjour,

Je dois compter le nombre de connexion d'un client par mois.
Mais il y a des mois ou par exemple, il ne c'est pas connecté, donc le nombre de connexion sera à 0.
Mon tableau est construit comme ca :
Array
(
    [80] => Array
        (
            [10] => 0
            [9] => 25
        )

    [81] => Array
        (
            [1] => 222
            [12] => 125
            [10] => 48
        )

    [82] => Array
        (
            [4] => 41
            [12] => 58
        )

)

[80] = correspond à l'ID client
[10] et [9] = correspond au mois de l'année => nombre de connexion
Ce que je souhaite faire c'est d'ajouter 0 pour les mois auxquels il ne s'est pas connecté.
J'ai tenté ceci :
foreach($totMed as $cle1 => $valeur1){
	foreach ($valeur1 as $cle2=>$valeur2){
		for($v=1;$v<=12;$v++){
			if($v != $cle2){
				$essai[$cle2] = $v;		
			} else {
				$essai[$cle2] = $cle2;
			}
		}			
	}		
}

Mais sans succès.
Merci de votre aide.

3 réponses

  1. Je ne suis pas vraiment sûr d'avoir compris...
    si le code dans $value[1] correpond bien à la clé qu'il y a dans $totMed, ça devrait donner :

    <?php foreach($webRow as $value){ ?> 
      <tr>
        <td><?php echo $value[1]; ?></td>
        <td><?php echo $value[0]; ?></td>
        <td><?php echo $value[2]; ?></td>
        <td><?php echo $value[4]; ?></td><?php 
    			for($k=1;$k<=12;$k++) { ?>
        <td><?php echo $totMed[$value[1]][$k] ?></td><?php } ?>
      </tr><?php } ?>
    


    À nom humble avis, il vaudrait mieux initialiser les valeurs inexistantes avec & nbsp; (sans espace entre & et nbsp;)plutôt que 0, car un tableau presque plein de zéros est pénible à lire
    1. Vu comme ca, c'est beaucoup plus propre, et surtout ca fonctionne !!!
      Oui je viens de voir que mon tableau avec les 0 donne mal à la tête je vais donc essayer de le remplir soit avec du vide soit avec un -
      Merci beaucoup de votre aide le père !!
  2. Est-ce qu'il doit y avoir plusieurs lignes pour chacun de tes $webRow ?
    Je suppose qu'en fait, chaque ligne de $totMed correspond à une seule ligne $webRow et tu ne devrais donc pas avoir une boucle sur $totMed pour chacun de tes webRow. Mais comme j'ignore quelle relation il y a entre les deux, je ne peux pas te dire quoi corriger exactement.
    1. Mon webRow correspond au numéro, au nom, nbr depuis le début, nbr annee en cours.
      Et oui en effet il y a plusieurs lignes pour mes webRow. (une ligne par client)
      et vous avez tout compris, je dois avoir une ligne de totMed (les mois de l'année) pour chaque valeur de webRow.
  3. Bonjour

    Pas essayé, mais ça devrait marcher :

    foreach($totMed as $cle1 => $valeur1){  
      for ($k=1; $k<=12; $k++) {  
        if (!isset($totMed[$cle1][$k]))  $totMed[$cle1][$k]=0;  
      }  
    }
    1. Merci le père, cela fonctionne.
      Autre petit souci, actuellement mon tableau html est construit comme ceci :
      Code | Nom | Nbr depuis le début | Nbr annee en cours | Janv | Fév | Mars | Avril ..... | Déc

      Et l'affichage de mes données se fait comme ceci :
      <?php foreach($webRow as $value){ 
      			?><tr>
      				<td><?php echo  $value[1]; ?></td>
      				<td><?php echo $value[0]; ?></td>
      				<td><?php echo $value[2]; ?></td>
      				<td><?php echo $value[4]; ?></td><?php
      			}
      ?><tr><?php
      			foreach($totMed as $my_value){ 
      						foreach ($my_value as $cle2=>$valeur2){
      				?><td><?php echo $valeur2; ?></td><<?php
      			} } 
      				 	?>
      			</tr>
      

      Comment peut-on faire pour aller à la ligne pour chaque client ?
      Merci encore de ton aide le père