Page 1 sur 1

tableau multidimensionnel foreach

Posté : 28 mai 2012, 11:15
par vladoum
Bonjour,

Je cherche à créer avec une boucle foreach un tableau multidimensionnel. J'ai cherché un peu sur le net et j'ai trouvé une solution qui marche mais je ne comprends pas comment. J'aurai besoin de vos explications donc :)
function explodeTree($parts)
{
         $returnArr=array();
  	 $parentArr=&$returnArr;
	 foreach ($parts as $part){
	 	$parentArr[$part]=array();
	 	$parentArr=&$parentArr[$part];
	 }
         return $returnArr;
}

$parts=Array('bla','bli','blo');
$tree = explodeTree($parts);
echo("<pre>");
print_r($tree);
echo("</pre>");
Voila, je ne voit pas pourquoi on utilise "&$" dans la fonction et comment comme par magie le tableau final se retrouve dans $returnArr :?:

Re: tableau multidimensionnel foreach

Posté : 28 mai 2012, 12:13
par moogli
salut,

le & indique un passage par référence et non par valeur ?

Qu'est ce que ça signifie ?

un passage par valeur est simple à comprendre, on passe un valeur c'est tout.
Un passage par référence c'est le fait de donner à la fonction "l'adresse" de la variable et non sa valeur, ont dit que l'on passe une référence sur la variable.

le fait de passer une référence permet à la fonction qui reçois cette référence d'utiliser directement la variable (sans tenir compte de la portée des variables).
<?php
function explodeTree($parts)
{
         $returnArr=array();
         $parentArr=&$returnArr; // créer une référence et non un copie
         foreach ($parts as $part){
                $parentArr[$part]=array();
                $parentArr=&$parentArr[$part]; // idem
         }
         return $returnArr;
}
?>
$returnArr est donc modifié à chaque affectation de $parentArr.

@+

Re: tableau multidimensionnel foreach

Posté : 28 mai 2012, 12:16
par GiorgioLino
Pour "plusser" @moogli,

tu trouves des infos à ce sujet dans la doc php
functions.arguments.by-reference

Re: tableau multidimensionnel foreach

Posté : 28 mai 2012, 18:17
par vladoum
Merci beaucoup pour vos réponses. Je vais essayer d'examiner ça de plus près.

Re: tableau multidimensionnel foreach

Posté : 28 mai 2012, 18:55
par sirakawa
Un tableau multidimensionnel, dans mon esprit, est un tableau à plusieurs lignes et plusieurs colonnes:
sexe|fumeurs|abstinents
|garcons|85%|20%|
|filles|33%|67%