Array dans un for

Résolu/Fermé
Melooo Messages postés 1405 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 18 mars 2013 - 21 déc. 2011 à 09:24
Melooo Messages postés 1405 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 18 mars 2013 - 21 déc. 2011 à 10:22
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.
A voir également:

3 réponses

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
Melooo Messages postés 1405 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 18 mars 2013 84
21 déc. 2011 à 09:44
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
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
Melooo Messages postés 1405 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 18 mars 2013 84
Modifié par Melooo le 21/12/2011 à 10:02
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
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
Melooo Messages postés 1405 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 18 mars 2013 84
21 déc. 2011 à 10:22
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