假设我有一个名为$ file的变量和for循环:for($i=1; $i <= 5; $i++) {}
对于for循环的每次迭代,$i
值将附加到$file
变量名称,因此在for循环结束后,我应该有五个变量:$file1
,{ {1}},$file2
,$file3
和$file4
。
答案 0 :(得分:63)
答案 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 强>