如何在循环中更改php变量名?

时间:2011-06-04 05:13:26

标签: php variables loops for-loop

假设我有一个名为$ file的变量和for循环:for($i=1; $i <= 5; $i++) {}

对于for循环的每次迭代,$i值将附加到$file变量名称,因此在for循环结束后,我应该有五个变量:$file1,{ {1}},$file2$file3$file4

5 个答案:

答案 0 :(得分:63)

使用${'varname'} syntax

for($i=1; $i <= 5; $i++) {
    ${'file' . $i} = $i;
}

但是,使用数组而不是使用数组通常会更好。

答案 1 :(得分:11)

一种方法:

for($i = 1; $i <= 5; $i++) {
    ${'file'.$i} = ...;
}

但要做到这一点是糟糕的主意。为什么这是个坏主意?因为这是数组的意思。这样做:

for($i = 1; $i <= 5; $i++) {
    $file[$i] = ...;
}

(注意:通常的惯例是将数组键设置为0而不是1,但您不必这样做。)

答案 2 :(得分:4)

可以做你想做的事情,但是动态创建变量似乎是一种解决这类问题的不寻常方式(我可能错了)

我建议将文件名存储在一个数组中,以便稍后可以轻松迭代文件,或者添加一个额外的文件而不必更改任何硬编码的变量名称

    $myfiles = array();

    for ($i=1; $i<=5; $i++) {
       $myfiles["file$i"] = "value set in loop";
    }

    //if you want to use the values later
    $file5_value = $myfiles["file5"];

    //if you want to loop through them all
    foreach ($myfiles as $key => $val) {
      echo "$key -> $val\n";
    }

答案 3 :(得分:2)

您也可以使用数组。它没有相同的确切影响,但它通常是我在这些情况下使用的。

for($i=1; $i <= 5; $i++) {
    $file[$i] = $i;
}

答案 4 :(得分:1)

请参阅Variable Variables上的PHP手册。

$var_name = '';
for ($i = 0; $i < 5; $i++)
{
  $var_name = 'file' . $i;

  // reference $$var_name now.
  $$var_name = 'foo';
}

var_dump($file1);
var_dump($file2);
var_dump($file3);
var_dump($file4);
var_dump($file5);

<强> demo