Estoy tratando de usar nombres de variables dinámicas (no estoy seguro de cómo se llaman realmente) Pero más o menos así:
for($i=0; $i<=2; $i++) {
$("file" . $i) = file($filelist[$i]);
}
var_dump($file0);
El retorno es lo null
que me dice que no está funcionando. No tengo idea de cuál es la sintaxis o la técnica que estoy buscando, lo que dificulta la investigación. $filelist
se definió anteriormente
php
variables
dynamic
dynamic-variables
usuario1159454
fuente
fuente
Respuestas:
Envuélvelos en
{}
:Ejemplo de trabajo
Usar
${}
es una forma de crear variables dinámicas, ejemplo simple:fuente
${'fixedTime$i'} = $row['timeInstance'];
le da un no muy útil en$fixedTime$i
lugar de$fixedTime1, $fixedTime2
etc. (Afortunadamente loVisión general
En PHP, solo puede poner un extra
$
delante de una variable para convertirla en una variable dinámica:Si bien no lo recomendaría, incluso podría encadenar este comportamiento:
Puede, pero no está obligado a poner
$variableName
entre{}
:El uso
{}
solo es obligatorio cuando el nombre de su variable es en sí mismo una composición de múltiples valores, como este:Sin embargo, se recomienda usar siempre
{}
, porque es más legible.Diferencias entre PHP5 y PHP7
Otra razón para usar siempre
{}
es que PHP5 y PHP7 tienen una forma ligeramente diferente de tratar con variables dinámicas, lo que resulta en un resultado diferente en algunos casos.En PHP7, las variables dinámicas, las propiedades y los métodos ahora se evaluarán estrictamente en orden de izquierda a derecha, a diferencia de la combinación de casos especiales en PHP5. Los siguientes ejemplos muestran cómo ha cambiado el orden de evaluación.
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']()
fuente
Intenta usar en
{}
lugar de()
:fuente
$price_for_monday = 10; $price_for_tuesday = 20; $today = 'tuesday'; $price_for_today = ${ 'price_for_' . $today}; echo $price_for_today; // will return 20
Hago esto con bastante frecuencia en los resultados devueltos por una consulta.
p.ej
Ahora puedo usar $ MyFieldname (que es más fácil en declaraciones de eco, etc.) en lugar de $ MyQueryResult ['MyFieldname']
Sí, probablemente sea flojo, pero nunca he tenido ningún problema.
fuente
Tom, si tienes una matriz existente, puedes convertir esa matriz en objeto y usarla así:
fuente
Tengo una solución para el valor variable creado dinámicamente y combiné todo el valor en una variable.
fuente
Estaba en una posición donde tenía 6 matrices idénticas y necesitaba elegir la correcta dependiendo de otra variable y luego asignarle valores. En el caso que se muestra aquí, $ comp_cat era 'a', así que necesitaba elegir mi matriz 'a' (también, por supuesto, tenía matrices 'b' a 'f')
Tenga en cuenta que los valores para la posición de la variable en la matriz van después de la llave de cierre.
fuente
Intente usar {} en lugar de ():
fuente