Array dans un for

Résolu
Melooo Messages postés 1476 Statut Membre -  
Melooo Messages postés 1476 Statut Membre -
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. le père
     
    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;  
      }  
    }
    0
    1. Melooo Messages postés 1476 Statut Membre 84
       
      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
      0
  2. le père
     
    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.
    0
    1. Melooo Messages postés 1476 Statut Membre 84
       
      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.
      0
  3. le père
     
    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
    0
    1. Melooo Messages postés 1476 Statut Membre 84
       
      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 !!
      0