在PHP中动态声明变量

时间:2016-11-11 13:30:34

标签: php variables

我需要以下格式的一些变量:

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

然而,我收到一些错误: -

  

解析错误:语法错误,第412行/var/www/html/custom/ci/Dotell_customer/application/controllers/login.php中的意外'$ month'(T_VARIABLE)

我如何克服这个问题?

注意:

$$month creates a variable 01;

有什么方法可以让变量m_01陷入困境?

P.S。我知道阵列。我只想学习PHP变量变量。

6 个答案:

答案 0 :(得分:4)

这不是最好的做法,但仍然只是为了答案:

onEachFeature

最佳做法是创建一个数组。例如:

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

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

答案 1 :(得分:2)

我认为你正在寻找像

这样的东西
$varname = 'm_'.$i; // format the way you need it

$$varname = ...

正如评论中所指出的,它相当于代码味道,而且通常是不必要的。通常,阵列做得更好,即

$m[$i] = ...

答案 2 :(得分:2)

使用PHP变量变量。这也适用于评论

中的建议
${"m_$i"}

答案 3 :(得分:0)

与Davids建议使用阵列。

$month = [];

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

这里$ var [] = ...语法附加你的数组。 $ month [$ i]访问它。

答案 4 :(得分:0)

通常不建议使用双变量。您应该使用数组来解决您的问题:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul class="es-list" style="top: 305.483px; left: 191.25px; width: 194px; display: block;">

<li id="from_7" class="" value="7" style="display: block;">Adelaide</li>
<li id="from_1" class="" value="1" style="display: block;">Alexandria</li>
<li id="from_17" class="" value="17" style="display: block;">Antwerp</li>
<li id="from_19" value="19" style="display: block;">Aqaba</li>
</ul>

否则如果你真的想要双重变量那么:

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

我希望它有所帮助

答案 5 :(得分:-2)

char *linep = 0;
size_t asize = 0;
char *endp;
long c;
while (getline(&linep, &asize, stdin) > 0) {
    errno = 0;
    c = strtol(linep, &endp, 10);
    if (linep == endp || *endp != '\0' || errno) {
        puts("?Redo from start");
        continue;
    }
    if (c == 0) break;
    do_something_with(c);
}
free(linep);

访问var为

赋值$ month ='m_12';

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