2016-11-11 120 views
0

我需要的格式如下一些變量:聲明變量動態在PHP

$m_01; 
$m_02; 
$m_03; 
..... 
..... 
..... 
$m_12; 

在變量的數字是日曆月。 我可以分別聲明12個變量。不過,我想用循環聲明變量。所以我做了這樣的事情。

for($i = 1; $i <= 12; $i++) { 
    if($i<10) 
     $month = '0'.$i; 
    else 
     $month = $i; 
    $m_$i; 
} 

不過,我得到一些錯誤: -

Parse error: syntax error, unexpected '$month' (T_VARIABLE) in /var/www/html/custom/ci/Dotell_customer/application/controllers/login.php on line 412

我怎樣才能解決這個問題?

注:

$$month creates a variable 01; 

有什麼辦法,我可以洞穴變量m_01

P.S.我知道陣列。我只想學習PHP變量變量。

+4

什麼你要找的是一個「陣列」。 – David

+0

你也可以嘗試[變量變量](http://php.net/manual/ro/language.variables.variable.php)。 – Andrew

+0

儘管@David是正確的,你可以(但不應該)使用$ {'m _'。$ i};' –

回答

1

我認爲你正在尋找的東西像

$varname = 'm_'.$i; // format the way you need it 

$$varname = ... 

正如在評論中指出,這是相當一個代碼的氣味,而且經常是不必要的。通常,陣列做得更好,即

$m[$i] = ... 
2

使用PHP變量變量。這個工作過程還建議在評論

${"m_$i"} 
4

這不是遵循最佳實踐,但仍然只是回答:

for($i = 0; $i <= 12; $i++) { 
    ${"m_$i"} = $i; 
} 

echo $m_1; 
echo $m_2; 
echo $m_3; 

最好的做法是創建一個數組。例如:

$arr = []; 
for($i=0; $i <=12; $i++) { 
    $arr['m_'.$i] = $i; 
} 

print_r($arr); 
+0

,你爲什麼在不是最好的時候暗示它? –

+0

有變量變量的用法。我不確定OP是否僅僅以此爲例來看看如何做到這一點。 –

+0

因爲它提供了對php的細微差別的洞察力,同時又是給出問題的功能解決方案。 – kpie

0

跟戴維斯建議使用數組。

$month = []; 

for($i = 1; $i <= 12; $i++) 
{ 
    if($i<10) 
     $month[] = '0'.$i; 
    else 
     $month[] = $i; 
    $month[$i]; 
} 

這裏$ var [] = ...語法附加您的數組。 $月[$我]訪問它。

0

使用雙變量通常不建議。你真的應該使用一個數組來解決你的問題,因爲:

$month = array(); 
for($i = 1; $i <= 12; $i++) 
{ 
    if($i<10) 
     $month['m_0'.$i] = $i; 
    else 
     $month['m_'.$i] = $i; 
} 

否則,如果你真的想有必要去爲雙變量,則:

for($i = 1; $i <= 12; $i++) 
{ 
    if($i<10) 
     ${"m_0$i"} = $i; 
    else 
     ${"m_$i"} = $i; 
} 

我希望它能幫助

-2
for($i = 1; $i <= 12; $i++){ 
    if($i<10) 
     $month = '0'.$i; 
    else 
     $month = $i; 

    $month = 'm_' . $month; 
    .......... 
} 

訪問變量爲

賦值$月='m_12';

$$month