2010-12-09 6 views
4

À première vue, je pense que vous pouvez obtenir ce que j'essaie de faire. Je veux boucler des variables avec le même nom mais avec un préfixe numérique. J'ai également eu une certaine confusion sur le type de boucle que je devrais utiliser, pas sûr si une boucle "for" fonctionnerait. La seule chose est que je ne peux pas comprendre comment php pourrait interpréter "à la volée" ou variable fabriquée. J'ai eu des problèmes avec la sortie d'une chaîne avec un signe dollar. Merci d'avance!En boucle de variables avec le nom commun

$hello1 = "hello1"; 
$hello2 = "hello2"; 
$hello3 = "hello3"; 
$hello4 = "hello4"; 
$hello5 = "hello5"; 
$hello6 = "hello6"; 
$hello7 = "hello7"; 
$hello8 = "hello8"; 
$hello9 = "hello9"; 
$hello10 = "hello10"; 

for ($counter = 1; $counter <= 10; $counter += 1) { 
    echo $hello . $counter . "<br>"; 
} 

Répondre

5

Essayez ${"hello" . $counter}

$a = "hell"; 
$b = "o"; 
$hello = "world"; 
echo ${$a . $b}; 

// output: world 
8

Il est généralement mal vu, car il rend le code beaucoup plus difficile à lire et à suivre, mais vous pouvez réellement utiliser la valeur d'une variable comme le nom d'une autre variable:

$foo = "bar"; 
$baz = "foo"; 

echo $$baz; // will print "bar" 

$foofoo = "qux"; 
echo ${$baz . 'foo'}; // will print "qux" 

Pour plus d'informations, voir le PHP documentation sur variable Variables. Cependant, comme je l'ai déjà mentionné, cela peut conduire à un code très difficile à lire. Etes-vous sûr que vous ne pourriez pas simplement utiliser un tableau à la place?

$hello = array(
    "hello1", 
    "hello2", 
    // ... etc 
); 

for($hello as $item) { 
    echo $item . "<br>"; 
} 
+1

+1 pour réponse et une explication claire de pourquoi ne pas l'utiliser :) –

+0

est pas bonne idée utilise beaucoup de vars avec préfixe et etc, par exemple ... le phpcs (php code sniffer) s'en plaint. –

2

Vous pouvez utiliser des variables variables comme:

for ($counter = 1; $counter <= 10; $counter += 1) { 
     echo ${'hello' . $counter } , '<br>'; 
} 
Questions connexes