OVH Cloud OVH Cloud

for each sur un tableau a plusieurs dimensions

6 réponses
Avatar
Super Ben!
Bonjour,

j'ai un tableau :

$toto['var1']['tata'] = x1
$toto['var2']['tata'] = x2
$toto['var3']['tata'] = x3

$toto['var1']['tutu'] = y1
$toto['var2']['tutu'] = y2
$toto['var3']['tutu'] = y3

etc ...
et je voudrais dans un for each (ou deux imbriqués peut-être), réussir à
sortir de mon tableau :

var1 de tata = x1
var1 de tutu = x1

var2 de tata = x2
var2 de tutu = x2

var3 de tata = x3
var3 de tutu = x3

est-ce que vous voyez comment je pourrai faire car j'ai un peu de mal avec
les for each ...

merci de votre aide.

6 réponses

Avatar
Huwiler Sylvain
est-ce que vous voyez comment je pourrai faire car j'ai un peu de mal avec
les for each ...


foreach($toto as $k_toto){
foreach($toto['$k_toto'] as $ma_val){
echo $k_toto." de ".$ma_val." = ".$toto['$k_toto']['$ma_val']
}
}

pense que ca doit être un truc du genre par contre j'ai pas testé ...


--



====================================== Huwiler Sylvain
Aqua Echange: http://www.aqua-echange.org
Les Smiley Base de Smiley pour forum :
http://www.les-smiley.com

Avatar
Jedi121
Super Ben! a écrit le 20/02/2004 :
j'ai un tableau :

$toto['var1']['tata'] = x1
$toto['var2']['tata'] = x2
$toto['var3']['tata'] = x3
$toto['var1']['tutu'] = y1
$toto['var2']['tutu'] = y2
$toto['var3']['tutu'] = y3

etc ...
et je voudrais dans un for each (ou deux imbriqués peut-être), réussir à
sortir de mon tableau :

var1 de tata = x1
var1 de tutu = x1
var2 de tata = x2
var2 de tutu = x2
var3 de tata = x3
var3 de tutu = x3

est-ce que vous voyez comment je pourrai faire car j'ai un peu de mal avec
les for each ...
Autant d'imbrication de foreach qu'il y a de niveau.

Dans le cas présenté ci-dessus :

foreach($element AS $key => $subelement)
{
foreach($subelement AS $ind => $val)
{
echo "$key de $ind = $valn";
}
}

Avatar
Laurent Defours
Le Fri, 20 Feb 2004 18:00:09 +0000, Super Ben! a écrit :
j'ai un tableau :

$toto['var1']['tata'] = x1
$toto['var2']['tata'] = x2
$toto['var3']['tata'] = x3

$toto['var1']['tutu'] = y1
$toto['var2']['tutu'] = y2
$toto['var3']['tutu'] = y3

etc ...
et je voudrais dans un for each (ou deux imbriqués peut-être), réussir à
sortir de mon tableau :

var1 de tata = x1
var1 de tutu = x1

var2 de tata = x2
var2 de tutu = x2

var3 de tata = x3
var3 de tutu = x3


foreach ($toto as $dimension_1 => $toto_dim2) {
foreach ($toto_dim2 as $dimension_2 => $valeur) {
echo "$dimension_1 de $dimension_2 = $valeur<br />n";
}
echo '<br />';
}

avé la mise en page. ;-)
C'est pas si compliqué mais il faut traiter un tableau à la fois : dans
chaque case de ce tableau, il y a un autre tableau. Et dans chaque case de
ce tableau, ici il y a un scalaire, mais il pourrait y avoir à nouveau un
tableau. foreach te permet de parcourir chaque case d'un tableau. À
partir du moment où tu les prends les uns après les autres,
leur imbrication ne devrait pas te poser de problème.

--
Laurent

Avatar
Sebastien Poitrasson
et bien il y a deux façon :
foreach et while
pour ton exemple, j'utilise pas plusieurs dimension mais des sous
dimensions :
si par ex tu as
toto['var1']= array('tata'=>x1);
toto['var2']= array('tata'=>x2);
toto['var3']= array('tata'=>x3);
pour parcourir ce tableau le mieux c'est d'utiliser un while :
while(list($cle,$valeur) = each($toto)){
/**
*
* ici $valeur equivaut au tableau * contenu
dans la
* cle $cle,
* pour l'enregistrement 1 la clé c'est var1 ok?
*/
extract($valeur,EXTR_OVERWRITE)
/**
* en extrayant le tableau $valeur, on converti les clé en variable
* on utilise le param EXTR_OVERWRITE pour ecraser les var de meme
* nom,
* pour les autre va voir la doc a la fonction sort()
*/
echo $tata;
}

voila, ici l'utilisation de extract pour les multidimension.
Tu peux au lieu d'un extract, si les clé sont numerique au lieu de
textuelle, faire un autre while a l'intérieur, en nommant d'autre vars
bien sur, pas encore $cle et $value pasque sinon ca va ecraser celle du
dessus
pour un foreach :
foreach($toto as $val){
/**
* ici, $val contient la valeur value de la
* ligne du tableau. Ya pas la clé ici
*/
}

j'espere que ca t'aidera
a+
seb
Avatar
Super Ben!
Merci à tous ! J'ai réussi grâce à vos réponses !
Avatar
Savut
$toto['var1']['tata'] = x1;
$toto['var2']['tata'] = x2;
$toto['var3']['tata'] = x3;

$toto['var1']['tutu'] = y1;
$toto['var2']['tutu'] = y2;
$toto['var3']['tutu'] = y3;

foreach($toto as $kA=>$vA) {
foreach($toto[$kA] as $kB => $vB) {
echo "$kA de $kB = $vB<br>";
}
echo "<br>";
}

Savut