2011-08-02 158 views
1

我想完成這件事,PHP變量和會話使用問題

$m1 = $_SESSION[m1]; 
..... 

下面的for循環,

for ($i = 1; $i < 9; $i++) { 
$m . $i = $_SESSION['m' . $i]; 
} 

我到底做錯了什麼?

謝謝。

+0

您也許可以使用: $ _GLOBALS ['m'。 $ i] = $ _SESSION ['m'。 $ i]; – schmunk

回答

3

$m . $i是無效的:你應該使用,而不是:${'m' . $i}

基本上是:

  • 首先,你構造你的變量名:'m' . $i
  • 而且,只有這樣,纔會嘗試訪問具有此名稱的變量:${ 'm' . $i }


你也可以使用下面的語法:

$variableName = 'm' . $i; 
$$variableName = 'your-value-here'; 


,當然,在PHP手冊參考:Variable variables

+0

應該注意的是,實現不使用此PHP功能的目標可能有更好的方法。因此,使用[數組](http://php.net/manual/en/language.types.array.php)。 – Legolas

+0

取決於OP究竟需要什麼,你可能確實是對的。 –

0

嘗試

for ($i = 1; $i < 9; $i++) { 
    ${'m' . $i} = $_SESSION['m' . $i]; 
} 

$m. $i是2個變量($m$i)的值的concat並且不能被用作可變分配。

Anyway, Why you don't use an array?

+0

我得到這個錯誤::使用未定義的常量m--假設'm'在 – Ajay

+0

中忘記了引號,對不起。編輯 – RiaD

+0

該解決方案錯過周圍的報價,海報已經解決了這個問題。 – Legolas

0

部分$m . $i是問題所在。有其他方法可以解決此問題(${'m' . $i}),但不建議這樣做。

你想如何使用它?可以用數組來做到這一點嗎?因此,$m[$i]爲了得到$m[1]

+0

所以,我可以知道使用這個數組的優點,而不是前一個。 – Ajay

+0

數組是指變量列表。例如,對於一個數組,您可以請求其長度,並且可以查看其中的哪些元素,而使用此方法則必須知道確切的名稱並分開跟蹤。此外,數組(或其他編程語言中的列表和字典)是傳統編程概念,它們幾乎以任何語言存在。此外,人們可以通過使用(關聯)數組來實現使用這些「變量變量」的任何事情。 – Legolas

+0

謝謝,現在我試圖實現數組,你可以在這裏幫助$ _SESSION ['$ m [$ i]'] = clean($ _ POST [m [$ i]);我在這裏做錯了什麼?我想這是$ _SESSION ['$ m [1]'] = clean($ _ POST [m [1]); – Ajay

0

此外 - 這是一個有點出話題 - 使它成爲一個習慣寫

$ _SESSION [ 'M1']

,而不是

$ _SESSION [m1]

有一天,如果你不這樣做,你可能會面對一個奇怪的錯誤。