OVH Cloud OVH Cloud

Tableau multidimensionnel et foreach

1 réponse
Avatar
Fleur Marty
Bonsoir à tous,

Voici mon problème :

Je remplis un tableau à plusieurs dimensions avec les résultats d'un
query mysql.
Je ne sais d'ailleurs pas si je fais ca très bien mais bon, ca donne
ca :
$i = 0;
while ($r = FetchRow($qs)){
$tbl[$i][0] = $r[0];
$tbl[$i][1] = $r[1];
$tbl[$i][2] = $r[2];
$tbl[$i][3] = $r[3];
$tbl[$i][4] = $r[4];
$tbl[$i][5] = $r[5];
$tbl[$i][6] = $r[6];

$i++;
}
D'ailleurs j'ai un doute.
Est ce que je ne devrais pas plutot remplir mon tableau avec un truc
du genre :
$tbl[$i][0] = $r[0];
$tbl[$i][0][0] = $r[1];
$tbl[$i][0][0][0] = $r[2];
$tbl[$i][0][0][0][0] = $r[3];

.. etc ?

Ensuite il faut que je parcourre le tableau de facon récursive pour
trouver, pour chaque valeur de $tbl[$i][0] les lignes où $tbl[$i][6]
lui sont égales.
J'avoue que je suis un peu embrouillée sur la facon de faire ca.
Je me doute que ca implique du foreach mais je sèche sur la bonne
méthode.

Bref .. Je m'en sors pas trop :)

Un ptit coup de main ?

Merci d'avance !!!

Flaoua.

1 réponse

Avatar
cmeresse
Est ce que je ne devrais pas plutot remplir mon tableau avec un truc
du genre :
$tbl[$i][0] = $r[0];
$tbl[$i][0][0] = $r[1];
$tbl[$i][0][0][0] = $r[2];
$tbl[$i][0][0][0][0] = $r[3];


Heu, non.

Ensuite il faut que je parcourre le tableau de facon récursive pour
trouver, pour chaque valeur de $tbl[$i][0] les lignes où $tbl[$i][6]
lui sont égales.

Un ptit coup de main ?


En changeant la facon dont on stock les données dans $tbl:
while ($r = FetchRow($qs)){
$tbl[$r[6]][$nb_children[$r[6]]][0] = $r[0];
$tbl[$r[6]][$nb_children[$r[6]]][1] = $r[1];
$tbl[$r[6]][$nb_children[$r[6]]][2] = $r[2];
$tbl[$r[6]][$nb_children[$r[6]]][3] = $r[3];
$tbl[$r[6]][$nb_children[$r[6]]][4] = $r[4];
$tbl[$r[6]][$nb_children[$r[6]]][5] = $r[5];
// Plus besoin de stocker $r[6]
$nb_children[$r[6]]++;
}

Apres pour la suite il faudra tout de même une fonction recursive
pour afficher le menu (ou le je ne sais pas quoi... ?) mais plus
besoin
de test.

function tblOut($id)
{
out = "";
foreach ($tbl[$id] as $subTbl)
{
$out .= "ploumploum avec subTbl".tblOut($subTbl[0])."fin du
ploumploum avec subTbl";
}
return $out;
}

Mais ca je crois que tu l'as déjà trouvé. Le bonheur, c'est
simple comme une fonction récursive, non ? ;)

Christophe
PS: J'ai pas testé, il peut avoir des vrais morceaux de bugs dedans.