如何在循环中更改php变量名?
Posted
技术标签:
【中文标题】如何在循环中更改php变量名?【英文标题】:how to change php variable name in a loop? 【发布时间】:2011-09-08 06:10:14 【问题描述】:假设我有一个名为 $file 的变量和 for 循环:for($i=1; $i <= 5; $i++)
对于 for 循环的每次迭代,$i
值将附加到 $file
变量名,因此在 for 循环结束后,我应该有五个变量:$file1
、$file2
、$file3
、$file4
和 $file5
。
【问题讨论】:
为什么要这样做?使用(关联)数组作为可移植命名空间几乎总是更好的解决方案。 【参考方案1】:可以做你想做的事,但动态创建变量似乎是解决此类问题的不寻常方法(我可能错了)
我建议将文件名存储在一个数组中,这样您以后可以轻松地遍历文件,或者添加一个额外的文件而不必更改任何硬编码的变量名
$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";
【讨论】:
【参考方案2】:您也可以使用数组。它没有完全相同的效果,但我通常看到在这些情况下使用它。
for($i=1; $i <= 5; $i++)
$file[$i] = $i;
【讨论】:
【参考方案3】:有一种方法可以做到这一点:
for($i = 1; $i <= 5; $i++)
$'file'.$i = ...;
但这样做是一个坏主意。为什么这是个坏主意?因为这就是 arrays 的用途。改为这样做:
for($i = 1; $i <= 5; $i++)
$file[$i] = ...;
(注意。通常的约定是从 0 而不是 1 开始数组键,但您不必这样做。)
【讨论】:
【参考方案4】:请参阅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
【讨论】:
【参考方案5】:使用$'varname' syntax:
for($i=1; $i <= 5; $i++)
$'file' . $i = $i;
但是,使用数组通常比使用数组更好。
【讨论】:
@Yuri 非常感谢!即使在 2014 年,您的回答也在帮助人们! 我正在做的事情的数组无济于事,我正在逐行制作一个文件,所以我有$line01="foo"
....$line55="bar"
所以做这个变量变量方法似乎使对我来说最有意义,除非有更好的方法来逐行创建?所以。我如何在 01-09 上也有 0 填充?我想在 for 循环中有一个 if 语句,但有更好的方法吗?以上是关于如何在循环中更改php变量名?的主要内容,如果未能解决你的问题,请参考以下文章