Parcourir un sous Array avec while List each

Eléphant du PHP | 250 Messages

09 févr. 2010, 18:32

Bonjour,

Alors je travail sur les différentes façon de parcourir un Array et je suis actuellement sur le chapitre while List et each.
<?php
$tab=array('paris','londre','bruxelle');
list($x,$y)=$tab;
echo "$x $y  <br/>";
?>

<?php
$tab[50]='nombre';
$tab['couleur']="violet";
$tab['tableau']=array("picasso"=>'1',"vinci"=>'2');( 1 )
while(list($indices,$valeurs)=each($tab))

{
    echo " [$indices]:: $valeurs ";
}
echo'<pre>';
print_r($tab);
echo'</pre>';

?>
Aperçu:
[0]:: paris [1]:: londre [2]:: bruxelle [50]:: nombre [couleur]:: violet [tableau]:: Array
Seulement, il me manque un exemple de l'auteur, j'ai rajouté un sous tableau de type associatif mais celui-ci n'est pas parcouru ( 1 ).
Que faut il que je rajoute à ma boucle ?

Merci
J'ai un petit éléphant rose chez moi avec dessus PHP woman :p
Pour une Europe sans hypocrisie, n'y barratins.
L'euro caca j'en veux plus. Les conneries c'est fini.

ViPHP
ViPHP | 5462 Messages

09 févr. 2010, 18:40

tu parcour uniquement les valeurs du tableau donc :

Code : Tout sélectionner

nombre violet Array
si veux parcourir ton autre liste il va falloir détecter si s'en est une et si oui on la parcour
while(list($indices,$valeurs)=each($tab))	
{
    echo $valeurs;
    if(is_array($valeurs))
    {
        while(list($ind,$val)=each($valeurs))
        {
            echo $val;
        }
    }
} 

Eléphant du PHP | 250 Messages

09 févr. 2010, 18:48

Avec une boucle for, il suffit de faire une 2ème boucle pour parcourir les sous-tableaux.
<?php
$tab1=array('leparc','paris',"35");
$tab2=array('duroc','vincenne',"22");
$tab3=array('denoé','saint cloud',"47");
$clients=array($tab1,$tab2,$tab3);
echo'<br/><br/>';
for($i=0;$i<sizeof($clients);$i++)
{
print"Indice [$i] contient un {$clients[$i]} ";
    for($y=0;$y<count($clients[$i]);$y++)
    {
    echo'<pre>';
    print"- {$clients[$i][$y]} -" ;
    echo'</pre>';
    }

}
?>
Mais dans le cas plus haut, je ne vois pas comment créer la 2ème boucle.
J'ai un petit éléphant rose chez moi avec dessus PHP woman :p
Pour une Europe sans hypocrisie, n'y barratins.
L'euro caca j'en veux plus. Les conneries c'est fini.

ViPHP
ViPHP | 5462 Messages

09 févr. 2010, 18:49

j'ai editer plus haut :wink:

Eléphant du PHP | 250 Messages

09 févr. 2010, 19:12

while(list($indices,$valeurs)=each($tab))

{
    echo'<pre>';
        echo " [$indices]:: $valeurs ";
	if(is_array($valeurs))
	{
	    while(list($ind,$val)=each($valeurs))
	    {echo " $ind:: $val ";}
	}
    echo'</pre>';
}
ça marche ! Mais pourquoi il m'affiche le type ? J'en ai pas besoin dans l'affichage. J'ai besoin soit des indices soit des valeurs.
Hors ici il m'affiche ça :
[tableau]:: Array picasso:: 1 vinci:: 2
Quest-ce qui fait le type ici ?
J'ai un petit éléphant rose chez moi avec dessus PHP woman :p
Pour une Europe sans hypocrisie, n'y barratins.
L'euro caca j'en veux plus. Les conneries c'est fini.

ViPHP
ViPHP | 5462 Messages

09 févr. 2010, 19:23

parce que tu fais en premier
echo " [$indices]:: $valeurs ";
sinon dans ta boucle fais :
if(is_array($valeurs))
{
    while(list($ind,$val)=each($valeurs))
    {
        echo " $ind:: $val ";
    }
}
else
{
    echo " [$indices]:: $valeurs ";
}

Eléphant du PHP | 250 Messages

09 févr. 2010, 20:12

ouai, ben c'est normal effectivement. Bon je vais continuer ma lecture.

Merci Stealth ;)
J'ai un petit éléphant rose chez moi avec dessus PHP woman :p
Pour une Europe sans hypocrisie, n'y barratins.
L'euro caca j'en veux plus. Les conneries c'est fini.

ViPHP
ViPHP | 5462 Messages

09 févr. 2010, 20:40

si tu veux parcourir un array récursivement t'as array_walk_recursive ou mieux RecursiveArrayIterator

Eléphant du PHP | 250 Messages

09 févr. 2010, 20:46

si tu veux parcourir un array récursivement t'as array_walk_recursive ou mieux RecursiveArrayIterator
Je prends note ! Mais j'ai trop de question encore sans réponses ou bien je vois encore floue malgré que je commence à maîtriser la chose c'est le paradoxe. #-o

Donc chaque chose en son temps. Je fais mon petit bout de chemin avec mes mèches blondes :mrgreen:

Merci ;)
J'ai un petit éléphant rose chez moi avec dessus PHP woman :p
Pour une Europe sans hypocrisie, n'y barratins.
L'euro caca j'en veux plus. Les conneries c'est fini.