2011-05-04 112 views
2

我不確定這是否可能,但我有一個計數器變量,每次增加一個。 現在我在櫃檯上面有幾個變量,後面有一個數字,例如:PHP使變量變量

$var1=... 
$var2=... 
$var3=... 

現在櫃檯裏面,我想變,以增加與計數器變量後的數...

所以像

for ($counter = 1; $counter <= 3; $counter += 1) { 
    $var=$var$counter; 
} 

我不希望是一個字符串,我只需要一個變量後面的數字,以便每次計數器變量增加一個。

回答

1

不確定你的意思是沒有字符串,但這應該做到這一點。

for ($counter = 1; $counter <= 3; $counter += 1) { 
    $varName = 'var' . $counter; 
    $var=$$varName; 
} 

但我同意應該使用不同的方法(數組)。

+0

輝煌,完美的作品:) – 2011-05-04 18:31:22

2

這被稱爲variable variable。每當你考慮使用它時,都要意識到你應該使用數組。

+0

這將是一個很好的評論。 – mario 2011-05-04 18:30:22

+0

謝謝,但我現在不能使用數組,如果我更改了一些我之前獲得的網站的代碼,並且我只是想在測試之前對其進行測試:) – 2011-05-04 18:30:57

+0

@mario - 它也是一個答案,因爲它鏈接到解釋如何做問題的文檔。 – Quentin 2011-05-04 18:33:02

1

你想用這個做什麼?

我問,因爲它看起來像你會更好使用數組來實現你想要的。然後,你可以這樣做:

for ($counter = 1; $counter <= 3; $counter += 1) { 
    $var[$counter] = $value; 
} 
0

你能做到這一點,但它的不建議

它看起來像這樣:

for ($counter = 1; $counter <= 3; $counter += 1) { 
    $var = ${'var' . $counter}; 
} 
+0

這是行不通的。您將$ var設置爲尚不存在的變量的值。相反,您希望創建一個名稱與$ var相同的新變量。你需要把它們放在賦值運算符周圍,就像我在答案中所做的那樣。 – BraedenP 2011-05-04 18:26:42

+0

@BraedenP - 你今天應該學習新東西。 PHP是一種寬鬆的類型語言。學習,年輕的天行者,學習。這是你的麪包和黃油! – 2011-05-04 18:36:51

0

你想改變的代碼這樣:

for ($counter = 1; $counter <= 3; $counter += 1) { 
    ${"var".$counter} = $var; 
} 

結束語字符串中括號,您可以使用它來動態地創建一個變量名,因此我們只需將「var」與計數器值連接起來,然後將其用作新的變量名稱。

但是,請注意,這樣做會創建並初始化沿途的所有變量...因此,在此示例中,您將以$ var,$ var1和$ var2結束所有等於相同的值。如果這不是你想要的,你將不得不unset()所有你不想要的變量。

但是請注意,在大多數情況下,這不是「最佳實踐」。請問爲什麼你需要這樣做?也許陣列會更合適..