2010-06-24 6 views
1

J'utilise un tableau pour stocker les noms d'autres tableaux qui sont générés dynamiquement ailleurs. Je dois parcourir le tableau "names" et accéder au contenu des tableaux "named". Quelque chose comme ceci:Variables variables inverses?

$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) { 
    // how to access the contents of $one, $two and $three using only $names?? 
} 

Je suis preety sûr que je devrais être en mesure d'utiliser des variables variables en quelque sorte, mais tous les exemples que j'ai lu montrent l'inverse logique de ce que je suis en train de faire (à moins que je suis mal compris les principes de base - tout à fait possible!)

Un grand merci pour tous les conseils.

+0

Oui, vous avez mal compris les variables variables. Ils font exactement ce que vous voulez. –

Répondre

3
$names = array("one", "two", "three"); 
$one = array("a", "b", "c"); 
$two = array("c", "d", "e"); 
$three = array("f", "g", "h"); 
foreach ($names as $name) { 
// how to access the contents of $one, $two and $three using only $names?? 
print_r(${$name}); 
} 
+0

On dirait que je pensais à ce sujet trop dur et la réponse me regardait dans les yeux. Toutes les réponses correctes, merci y'all! – user211433

2

PHP a une fonctionnalité appelée variable variables:

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

Pour plusieurs variables, vous pouvez utiliser la syntaxe ci-dessus ($$name). Lorsque vous souhaitez utiliser une expression pour nommer les variables, utilisez la syntaxe de parenthèse comme ${"foo".$name}.

1

Comme ça?

foreach ($names as $name) { 
    var_dump($$name); // do something else 
} 
0
$names = array("one", "two", "three"); 
$one = array("a", "b", "c"); 
$two = array("c", "d", "e"); 
$three = array("f", "g", "h"); 

foreach ($names as $name) { 
    foreach ($$name as $value) { 
    // $value contains the array values. 
    } 
} 

pour avis qu'il est foreach ($array as $value), pas foreach ($value in $array).