Exploiter une variable inconnue dans un array incrémenté [Résolu]

Messages postés
36
Date d'inscription
vendredi 28 avril 2006
Statut
Membre
Dernière intervention
31 janvier 2011
- - Dernière réponse : Teddy_le_gnein
Messages postés
36
Date d'inscription
vendredi 28 avril 2006
Statut
Membre
Dernière intervention
31 janvier 2011
- 9 déc. 2008 à 13:56
Hello tous le monde.
je reviens à la charge avec mes array incrémentés...

Comme la dernière fois je suis persuadé qu'il y a une solution simple mais que j'utilise une mauvaise syntaxe.

alors voilà, je créé un tableau contenant un texte, ce texte est lui meme un tableau contenant plusieurs users. et pour finir, chaque user sonts autant de tableau contenant des infos...
Je n'arrive pas à sortir la varriable user autrement qu'en array...
voici un illustration de mon blabla:

*text1:
      °user1
            -info a
            -info b
      °user2
            -info c
      °user3
            -info d
*text2:
      °user1
            -info x
            -info y
      °user4
            -info z
*text3
....   ......   ..............

voici mon code de création de l'array:

$array[$text][$user][] = $info;

lorseque je sort un :



echo "";
print-r ($array);
echo "

";



je voi bien ma structure comme je la désire.

mais quand je veux exploiter ces donnée, je n'arrive qu'à sortir text et info... user me renvoi array...
que dois-je ecrire pour pouvoir afficher mon user?

code d'exploitation de l'array créé:

foreach($array as $text => $val)
   {
   //initialisation de $listeinfo
   $listeinfo = "";
   //initialisation de $listeuser
   $listeuser = "";
   //parcour des differents user d'après leur texte correspondant
   foreach( $val as $user)
       {
         //création de la variable des affaires de l'user
         //$listeuser = $listeuser.'- '.$user.'
';
              
          //parcour des differentes infos par user contenu dans l'array
          foreach( $user as $info )
                    {
                    //création de la variable des affaires de l'user
                    $listeaffaire = $listeaffaire.'- '.$affaire.'
';
                    }
          } 
   echo "<hr>";
   echo $listeaffaire;
   echo "

".$listeuser;
   }
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
Messages postés
10918
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
17
3
Merci
Hello,

ton erreur est simple.
$aTab = array(
  'texte1' => array('toto' =>array('infos toto 1', 'infos toto 2'), 'titi' =>array('infos titi1', 'infos titi 2')),
  'texte2' => array('tata' => array('infos tata 1', 'infos tata 2'), 'tutu' => array('infos tutu 1', 'infos tutu 2')),
);

foreach($aTab as $sClefTexte=> $aUsers)
Là, tu as bien compris, curieusement :  $sClefTexte contient au 1er tour de boucle 'texte1', puis 'texte2'. Que contient $aUsers?
ben la valeur correspondant à la clef $sClefTexte, donc :
array('toto' => 'infos toto', 'titi' => 'infos titi')
puis
array('tata' => 'infos tata', 'tutu' => 'infos tutu')
Du coup, 2ème boucle:
foreach($aUsers as $sClefUser => $aInfosUser)
Là, $sClefUser contiendra au 1er tour du 1er tour (si j'ose dire) 'toto', au 2d tour du 1er tour 'titi', au 1er tour du 2d tour 'tata' et enfin au 2d tour du 2d tour 'tutu'.
Et $aInfosUser: iencore un tableau. Donc re boucle :
foeach($aInfosUser as $iClef => $sInfo)
$iClef est alors l'index de ton tableau d'infos pour chaque utilisateur (0, 1, 2 etc...)
$sInfo contient la variable texte contenant une fino de l'utilisateur.

Toi, tu utilises $aInfosUsercomme une variable scalaire (une chaîne en l'occurence). Or, c'est un tableau.
 

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 157 internautes nous ont dit merci ce mois-ci

Commenter la réponse de malalam
Messages postés
36
Date d'inscription
vendredi 28 avril 2006
Statut
Membre
Dernière intervention
31 janvier 2011
0
Merci
oups...
j'ai oublier de traduire toutes les variables...

foreach($array as $text => $val)
   {
   //initialisation de $listeinfo
   $listeinfo = "";
   //initialisation de $listeuser
   $listeuser = "";
   //parcour des differents user d'après leur texte correspondant
   foreach( $val as $user)
       {
         //création de la variable des affaires de l'user
         //$listeuser = $listeuser.'- '.$user.'
';
              
          //parcour des differentes infos par user contenu dans l'array
          foreach( $user as $info )
                    {
                    //création de la variable des affaires de l'user
                    $listeinfo = $listeinfo.'- '.$info.'
';
                    }
          } 
   echo "<hr>";
   echo $listeinfo;
   echo "

".$listeuser;
   }

voilà qui est plus correcte.

ainsi, le $listeinfo me sort bien un listing des infos, mais le $listeuser m'envoi un listing de valeurs non définies "array".

y'a il un moyen simple d'avoir ma liste d'user ou faut-il redéfinire la méthode d'exploitation du tableau avec les foreach?
Commenter la réponse de Teddy_le_gnein
Messages postés
36
Date d'inscription
vendredi 28 avril 2006
Statut
Membre
Dernière intervention
31 janvier 2011
0
Merci
Désolé de ne répondre que maintenant, et merci de ta réactivité et ton aide.
Je vois ce que tu veux dire, et je vais tenter ça dès que j'en aurai l'occasion...
Le problème c'est que je dois battailler sur plusieurs fronts et j'ai un autre truc sur les bras en ce moment...
Je validerai ou te ferais part de mes observations dès que je pourrai m'attaquer à nouveau à ce code.

merci, et à très bientôt...

enfin j'espère parceque mon bout de code commence aussi à urger...

Pfff... la gestion des prioritées ici c'est une horreure.
Commenter la réponse de Teddy_le_gnein
Messages postés
36
Date d'inscription
vendredi 28 avril 2006
Statut
Membre
Dernière intervention
31 janvier 2011
0
Merci
Désolé de ne répondre que maintenant, et merci de ta réactivité et ton aide.
Je vois ce que tu veux dire, et je vais tenter ça dès que j'en aurai l'occasion...
Le problème c'est que je dois battailler sur plusieurs fronts et j'ai un autre truc sur les bras en ce moment...
Je validerai ou te ferais part de mes observations dès que je pourrai m'attaquer à nouveau à ce code.

merci, et à très bientôt...

enfin j'espère parceque mon bout de code commence aussi à urger...

Pfff... la gestion des prioritées ici c'est une horreure.
Commenter la réponse de Teddy_le_gnein
Messages postés
36
Date d'inscription
vendredi 28 avril 2006
Statut
Membre
Dernière intervention
31 janvier 2011
0
Merci
ok, merci, ça roule ^_^
Commenter la réponse de Teddy_le_gnein