2010-12-09 16 views
4

Auf den ersten Blick denke ich, dass Sie bekommen können, was ich versuche zu tun. Ich möchte Variablen mit dem gleichen Namen, aber mit einem numerischen Präfix durchlaufen. Ich hatte auch einige Verwirrung über die Art von Schleife, die ich verwenden sollte, nicht sicher, ob eine "for" -Schleife funktionieren würde. Die einzige Sache ist, dass ich nicht meinen Kopf darüber wickeln kann, wie PHP "on the fly" oder fabrizierte Variable interpretieren könnte. Es gab einige Probleme mit der Ausgabe einer Zeichenfolge mit einem Dollarzeichen. Danke im Voraus!Durchschleifen Variablen mit gemeinsamen Namen

$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>"; 
} 

Antwort

5

Versuchen ${"hello" . $counter}

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

// output: world 
8

es auf allgemein verpönt ist, da es Code viel schwieriger macht, um zu lesen und zu befolgen, aber man kann tatsächlich eine Variable den Wert als ein anderer Name der Variablen verwenden:

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

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

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

Weitere Informationen finden Sie in der PHP Dokumentation auf variable Variables.

Wie bereits erwähnt, kann dies jedoch zu einem sehr schwer lesbaren Code führen. Sind Sie sicher, dass Sie nicht einfach ein Array verwenden können?

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

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

+1 für die richtige Antwort und klare Erklärung, warum es nicht zu benutzen :) –

+0

ist kein tolle idee benutze viele vars mit prefix und etc, zum beispiel ... der phpx (php code sniffer) beklagt sich darüber. –

2

Sie variable Variablen wie verwenden können:

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