una tabla para mostrar insertar guardar formulario extraer ejemplos desde datos constantes con como codigo php variables dynamic dynamic-variables

tabla - Usar llaves con nombres dinámicos de variables en PHP



mostrar datos de mysql en php en una tabla html (7)

Visión de conjunto

En PHP, puedes poner $ extra frente a una variable para convertirla en una variable dinámica:

$$variableName = $value;

Si bien no lo recomendaría, incluso podrías encadenar este comportamiento:

$$$$$$$$DoNotTryThisAtHomeKids = $value;

Puedes pero no estás obligado a poner $variableName entre {} :

${$variableName} = $value;

El uso de {} solo es obligatorio cuando el nombre de la variable es en sí mismo una composición de valores múltiples, como esta:

${$variableNamePart1 . $variableNamePart2} = $value;

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 da como resultado un resultado diferente en algunos casos.

En PHP7, las variables dinámicas, las propiedades y los métodos se evaluarán estrictamente en orden de izquierda a derecha, a diferencia de la combinación de casos especiales en PHP5. Los ejemplos a continuación muestran cómo ha cambiado el orden de evaluación.

Caso 1: $$foo[''bar''][''baz'']

  • Interpetación PHP5: ${$foo[''bar''][''baz'']}
  • Interpetación de PHP7: ${$foo}[''bar''][''baz'']

Caso 2: $foo->$bar[''baz'']

  • Interpetación PHP5: $foo->{$bar[''baz'']}
  • Interpetación de PHP7: $foo->{$bar}[''baz'']

Caso 3: $foo->$bar[''baz'']()

  • Interpetación PHP5: $foo->{$bar[''baz'']}()
  • Interpetación de PHP7: $foo->{$bar}[''baz'']()

Caso 4: Foo::$bar[''baz'']()

  • Interpetación PHP5: Foo::{$bar[''baz'']}()
  • Interpetación de PHP7: Foo::{$bar}[''baz'']()

Intento utilizar nombres dinámicos de variables (no estoy seguro de cómo se llaman en realidad) Pero más o menos así:

for($i=0; $i<=2; $i++) { $("file" . $i) = file($filelist[$i]); } var_dump($file0);

El retorno es null que me dice que no está funcionando. No tengo idea de cuál es la sintaxis o la técnica que estoy buscando aquí, lo que hace que sea difícil investigar. $filelist se define anteriormente.


Envuélvalos en {} :

${"file" . $i} = file($filelist[$i]);

Ejemplo de trabajo

Usar ${} es una forma de crear variables dinámicas, ejemplo simple:

${''a'' . ''b''} = ''hello there''; echo $ab; // hello there


Estaba en una posición en la que 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 tuve que elegir mi matriz ''a'' (también tuve, por supuesto, arrays ''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.

$ {''comp_cat _''. $ comp_cat .''_ arr ''} [1] [0] = "FRED BLOGGS";

$ {''comp_cat _''. $ comp_cat .''_ arr ''} [1] [1] = $ file_tidy;

echo ''Primer valor de matriz es''. $ comp_cat_a_arr [1] [0]. '' y el segundo valor es. $ comp_cat_a_arr [1] [1];


Intenta usar {} lugar de () :

${"file".$i} = file($filelist[$i]);


Lo hago con bastante frecuencia en los resultados devueltos por una consulta.

p.ej

// $MyQueryResult is an array of results from a query foreach ($MyQueryResult as $key=>$value) { ${$key}=$value; }

Ahora puedo usar $ MyFieldname (que es más fácil en las declaraciones de eco, etc.) en lugar de $ MyQueryResult [''MyFieldname'']

Sí, probablemente sea flojo, pero nunca he tenido ningún problema.


Tom, si tienes una matriz existente, puedes convertir la matriz en objeto y usarla así:

$r = (object) $MyQueryResult; echo $r->key;


tengo una solución para el valor de variable creado dinámicamente y combiné todo el valor en una variable.

if($_SERVER[''REQUEST_METHOD'']==''POST''){ $r=0; for($i=1; $i<=4; $i++){ $a = $_POST[''a''.$i]; $r .= $a; } echo $r; }