how to change php variable name in a loop?
Solution 1
Use ${'varname'} syntax:
for($i=1; $i <= 5; $i++) {
${'file' . $i} = $i;
}
However, it's often better to use arrays instead of this.
Solution 2
There is a way to do this:
for($i = 1; $i <= 5; $i++) {
${'file'.$i} = ...;
}
But it is a bad idea to do this. Why is it a bad idea? Because this is what arrays are meant for. Do this instead:
for($i = 1; $i <= 5; $i++) {
$file[$i] = ...;
}
(NB. It is the usual convention to start array keys at 0 rather than 1, but you do not have to do so.)
Solution 3
it is possible to do what you want, but creating variables on the fly seems an unusual way to solve a problem like this (i could be wrong)
I would suggest storing the filenames in an array, that way you can easily iterate over the files later on, or add an extra file and not have to change any hardcoded variable names
$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";
}
Solution 4
You can use an array as well. It doesn't have the same exact affect, but it is generally what I see used in these situations.
for($i=1; $i <= 5; $i++) {
$file[$i] = $i;
}
Solution 5
See PHP's manual on 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);
user701510
Updated on August 11, 2020Comments
-
user701510 almost 4 years
Lets say I have a variable called $file and the for loop:
for($i=1; $i <= 5; $i++) {}
For each iteration of the for loop, the
$i
value will be appended to the$file
variable name so after the for loop ends, I should have five variables:$file1
,$file2
,$file3
,$file4
, and$file5
.