2010-12-09 31 views
4

乍一看,我認爲你可以得到我想要做的。我想循環使用具有相同名稱但帶有數字前綴的變量。我也有一些關於我應該使用的循環的疑惑,不確定「for」循環是否可行。唯一的問題是,我無法圍繞PHP如何解釋「即時」或虛構變量。輸入帶有美元符號的字符串也會遇到一些麻煩。提前致謝!通過變量以通用名稱循環

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

回答

5

嘗試${"hello" . $counter}

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

// output: world 
8

它通常令人難以接受的,因爲它使代碼更難閱讀並遵守,但實際上你可以使用一個變量的值作爲另一個變量的名稱:

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

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

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

欲瞭解更多信息,請參見PHP關於variable Variables的文檔。

但是,正如我已經提到的,這可能會導致一些非常難以閱讀的代碼。你確定你不能只是使用數組嗎?

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

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

+1爲正確答案爲什麼不使用它:) – 2010-12-09 03:34:28

2

可以使用可變變量:

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