1 votes

Variables variables inversées ?

Je suis en train d'utiliser un tableau pour stocker les noms d'autres tableaux qui sont générés dynamiquement ailleurs. J'ai besoin de parcourir le tableau "names" et d'accéder aux contenus des tableaux "named". Quelque chose comme ceci :

$names = array("one", "two", "three");
$one = array("a", "b", "c");
$two = array("c", "d", "e");
$three = array("f", "g", "h");
foreach ($process_array in $names) {
    // comment accéder aux contenus de $one, $two et $three en utilisant uniquement $names ??
}

Je suis presque certain que je devrais pouvoir utiliser des variables variables d'une manière ou d'une autre, mais tous les exemples que j'ai lus montrent l'inverse logique de ce que j'essaie de faire (à moins que je ne comprenne mal les principes de base - totalement possible !)

Merci beaucoup pour tous les conseils.

3voto

Luis Melgratti Points 6297
$noms = array("one", "two", "three");
$one = array("a", "b", "c");
$two = array("c", "d", "e");
$three = array("f", "g", "h");
foreach ($noms as $nom) {
// comment accéder au contenu de $one, $two et $three en utilisant seulement $noms ??
print_r(${$nom});
}

2voto

Gumbo Points 279147

PHP dispose d'une fonctionnalité appelée variables variables :

foreach ($names as $name) {
    $$name;
}

Pour simplement des variables, vous pouvez utiliser la syntaxe ci-dessus ($$name). Lorsque vous voulez utiliser une expression pour nommer les variables, utilisez la syntaxe avec des crochets comme ${"foo".$name}.

1voto

Daniel Egeberg Points 6232

Comme ceci?

foreach ($names as $name) {
    var_dump($$name); // faire quelque chose d'autre
}

0voto

kiamlaluno Points 11856
$noms = array("one", "two", "three");
$one = array("a", "b", "c");
$two = array("c", "d", "e");
$three = array("f", "g", "h");

foreach ($noms as $nom) {
  foreach ($$nom as $valeur) {
    // $valeur contient les valeurs du tableau.
  }
}

Pour remarquer que c'est foreach ($tableau as $valeur), pas foreach ($valeur dans $tableau).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X