Estou tentando usar nomes de variáveis dinâmicas (não tenho certeza do que eles realmente são chamados), mas praticamente assim:
for($i=0; $i<=2; $i++) {
$("file" . $i) = file($filelist[$i]);
}
var_dump($file0);
O retorno é o null
que me diz que não está funcionando. Não tenho idéia de qual é a sintaxe ou a técnica que estou procurando, o que dificulta a pesquisa. $filelist
é definido anteriormente.
php
variables
dynamic
dynamic-variables
user1159454
fonte
fonte
Respostas:
Envolva-os em
{}
:Exemplo de trabalho
Usar
${}
é uma maneira de criar variáveis dinâmicas, exemplo simples:fonte
${'fixedTime$i'} = $row['timeInstance'];
dá-lhe um não é muito útil$fixedTime$i
, em vez de$fixedTime1, $fixedTime2
etc. (Felizmente visto quase de imediato.)Visão geral
No PHP, você pode simplesmente colocar um extra
$
na frente de uma variável para torná-la uma variável dinâmica:Embora eu não recomende, você pode encadear esse comportamento:
Você pode, mas não é forçado a colocar
$variableName
entre{}
:O uso
{}
é obrigatório apenas quando o nome da sua variável é uma composição de vários valores, como este:No entanto, é recomendável usar sempre
{}
, porque é mais legível.Diferenças entre PHP5 e PHP7
Outro motivo para usar sempre
{}
é que o PHP5 e o PHP7 têm uma maneira ligeiramente diferente de lidar com variáveis dinâmicas, o que resulta em um resultado diferente em alguns casos.No PHP7, variáveis dinâmicas, propriedades e métodos agora serão avaliados estritamente na ordem da esquerda para a direita, em oposição à combinação de casos especiais no PHP5. Os exemplos abaixo mostram como a ordem da avaliação mudou.
Caso 1 :
$$foo['bar']['baz']
${$foo['bar']['baz']}
${$foo}['bar']['baz']
Caso 2:
$foo->$bar['baz']
$foo->{$bar['baz']}
$foo->{$bar}['baz']
Caso 3:
$foo->$bar['baz']()
$foo->{$bar['baz']}()
$foo->{$bar}['baz']()
Caso 4:
Foo::$bar['baz']()
Foo::{$bar['baz']}()
Foo::{$bar}['baz']()
fonte
Tente usar em
{}
vez de()
:fonte
$price_for_monday = 10; $price_for_tuesday = 20; $today = 'tuesday'; $price_for_today = ${ 'price_for_' . $today}; echo $price_for_today; // will return 20
Faço isso com bastante frequência nos resultados retornados de uma consulta ..
por exemplo
Agora eu posso apenas usar $ MyFieldname (que é mais fácil nas instruções de eco, etc.) em vez de $ MyQueryResult ['MyFieldname']
Sim, provavelmente é preguiçoso, mas nunca tive problemas.
fonte
Tom, se você tiver um array existente, poderá convertê-lo em objeto e usá-lo assim:
fonte
Eu tenho uma solução para o valor variável criado dinamicamente e combinado todo o valor em uma variável.
fonte
Eu estava em uma posição em que tinha 6 matrizes idênticas e precisava escolher a correta, dependendo de outra variável e depois atribuir valores a ela. No caso mostrado aqui, $ comp_cat era 'a', então eu precisava escolher minha matriz 'a' (eu também tinha matrizes 'b' a 'f')
Observe que os valores para a posição da variável na matriz vão depois da chave de fechamento.
fonte
Tente usar {} em vez de ():
fonte