como alterar o nome da variável php em um loop?

Digamos que eu tenho uma variável chamada $ file e the for loop: for($i=1; $i <= 5; $i++) {}

Para cada iteração do loop for, o valor $i será anexado ao nome da variável $file , então, após o loop for terminar, eu deveria ter cinco variables: $file1 , $file2 , $file3 , $file4 e $file5 .

Use $ {‘varname’} syntax :

 for($i=1; $i <= 5; $i++) { ${'file' . $i} = $i; } 

No entanto, muitas vezes é melhor usar arrays em vez disso.

Existe uma maneira de fazer isso:

 for($i = 1; $i <= 5; $i++) { ${'file'.$i} = ...; } 

Mas é uma má idéia fazer isso. Por que é uma má idéia? Porque isso é o que os arrays são destinados. Faça isso em vez disso:

 for($i = 1; $i <= 5; $i++) { $file[$i] = ...; } 

(NB. É a convenção usual para iniciar as chaves da matriz em 0 em vez de 1, mas você não precisa fazê-lo).

é possível fazer o que você quer, mas criar variables ​​na mosca parece uma maneira incomum de resolver um problema como esse (eu poderia estar errado)

Eu sugeriria armazenar os nomes de arquivos em uma matriz, dessa forma você pode facilmente iterar sobre os arquivos mais tarde, ou adicionar um arquivo extra e não precisa alterar nenhum nome de variável codificado

  $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"; } 

Consulte o manual do PHP em variables ​​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); 

demo

Você também pode usar uma matriz. Não tem o mesmo efeito exato, mas é geralmente o que eu vejo usado nessas situações.

 for($i=1; $i <= 5; $i++) { $file[$i] = $i; } 

Veja a seção Variáveis ​​variables no manual do PHP. Você pode usar $$ para suas necessidades como esta: