如何在循环中更改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变量名?的主要内容,如果未能解决你的问题,请参考以下文章

如何连接PHP变量名?

如何在 django 模板中为循环创建唯一的 javascript 变量名?

如何获取在 for 循环中创建的变量名

打印 $_POST 变量名和值

PHP 连接变量名

如何让PHP程序把字符串组合成变量名?