可以说我有一个变量名为$文件和for循环:for($i=1; $i <= 5; $i++) {}
如何在循环中更改php变量名?
有关的for循环中,$i
值将被追加到$file
变量名每次迭代打完了循环结束,我应该有五个变量:$file1
,$file2
,$file3
,$file4
和$file5
。
可以说我有一个变量名为$文件和for循环:for($i=1; $i <= 5; $i++) {}
如何在循环中更改php变量名?
有关的for循环中,$i
值将被追加到$file
变量名每次迭代打完了循环结束,我应该有五个变量:$file1
,$file2
,$file3
,$file4
和$file5
。
+1,忘记了你可以使用大括号引用。 – 2011-06-04 05:18:00
@Yuri非常感谢你!即使在2014年,你的答案正在帮助人们! – sweaty 2014-03-19 12:35:31
对于我所做的事情的阵列将无济于事,我正逐行创建一个文件,所以我有'$ line01 =“foo”'....'$ line55 =“bar”'这样做这个变量变量方法为了让我觉得最合理,除非有更好的方法来创建每行代码?所以。我如何在01-09上填充0填充?我想在for循环中有一个if语句,但是有更好的方法吗? – 2015-02-09 15:22:39
请参阅PHP的手册Variable Variables。
$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);
有是一个办法做到这一点:
for($i = 1; $i <= 5; $i++) {
${'file'.$i} = ...;
}
但它是一个坏主意做到这一点。为什么这是一个坏主意?因为这是阵列的意思。做到这一点,而不是:
for($i = 1; $i <= 5; $i++) {
$file[$i] = ...;
}
(NB正是在0而不是1开始数组键通常的惯例,但你不必这么做。)
+1正是我要说的。 – 2011-06-04 05:19:54
您可以使用数组以及。它没有相同的确切影响,但它通常是我在这些情况下看到的。
for($i=1; $i <= 5; $i++) {
$file[$i] = $i;
}
就可以做你想做的,而是动态创建变量似乎解决这样的问题,一个不寻常的方式(我可能是错的)
我建议储存在一个文件名阵列,这样你可以很容易地在文件迭代以后,或增加一个额外的文件,并没有改变任何硬编码的变量名
参考PHP手册中的Variable variables部分。您可以使用$$
来满足您的需求:
<?php
$var_prefix = 'file';
for($i=1; $i <= 5; $i++) {
$var_name = $var_prefix . $i;
$$var_name = 'Foo Bar Blah Baz ' . $i;
}
var_dump($file1, $file2, $file3, $file4, $file5);
?>
您为什么要这么做?使用(关联)数组作为可移植的名称空间几乎总是一个更好的解决方案。 – 2011-06-04 05:16:40