(PHP 4, PHP 5, PHP 7, PHP 8)
extract — Importa las variables en la tabla de símbolos
Importa las variables en la tabla de símbolos.
extract() verifica cada clave para controlar si tiene un nombre de variable válido. También verifica las colisiones con variables existentes en la tabla de símbolos.
array
Un array asociativo. Esta función crea las variables cuyos
nombres son los índices de este array, y les asigna el valor asociado.
Para cada par clave/valor, extract() crea
una variable, con los parámetros flags
y prefix
.
Debe utilizar un array asociativo. Un array indexado numéricamente
no producirá ningún resultado, a menos que se utilice la opción
EXTR_PREFIX_ALL
o EXTR_PREFIX_INVALID
.
flags
El tratamiento de las colisiones es
determinado por flags
.
Este parámetro puede tomar uno de los siguientes valores:
EXTR_OVERWRITE
EXTR_SKIP
EXTR_PREFIX_SAME
prefix
,
y crear una nueva variable.
EXTR_PREFIX_ALL
prefix
para todas las variables.
EXTR_PREFIX_INVALID
prefix
.
EXTR_IF_EXISTS
EXTR_PREFIX_IF_EXISTS
EXTR_REFS
array
. Se puede utilizar esta
opción sola, o bien combinarla con otras opciones con
el operador OR, en el parámetro flags
.
Si flags
se omite, extract()
utilizará EXTR_OVERWRITE
por omisión.
prefix
Tenga en cuenta que prefix
solo es necesario para
los siguientes valores de flags
:
EXTR_PREFIX_SAME
, EXTR_PREFIX_ALL
,
EXTR_PREFIX_INVALID
o EXTR_PREFIX_IF_EXISTS
.
Si el resultado prefijado no es un nombre de variable válido,
no se importará en la tabla de símbolos. Los prefijos se separan automáticamente
del índice del array por un carácter de subrayado.
Devuelve el número de variables importadas con éxito en la tabla de símbolos.
Ejemplo #1 Ejemplo con extract()
Un uso posible de la función extract() es la exportación a la tabla de símbolos de arrays de variables devueltos por wddx_deserialize().
<?php
/* Supongamos que $var_array es un array devuelto por
wddx_deserialize */
$size = "large";
$var_array = array(
"color" => "blue",
"size" => "medium",
"shape" => "sphere"
);
extract($var_array, EXTR_PREFIX_SAME, "wddx");
echo "$color, $size, $shape, $wddx_size\n";
?>
El resultado del ejemplo sería:
blue, large, sphere, medium
La variable $size no fue sobrescrita, ya que se había especificado el parámetro EXTR_PREFIX_SAME
,
que permitió la creación de $wddx_size. Si
EXTR_SKIP
hubiera sido utilizado, entonces
$wddx_size no habría sido creado.
Con EXTR_OVERWRITE
, $size
habría tomado el valor "medium", y con EXTR_PREFIX_ALL
,
las variables creadas habrían sido $wddx_color,
$wddx_size y $wddx_shape.
No utilice extract() en datos desconocidos, como
los datos de usuario (i.e. $_GET,
$_FILES, etc.).
Si lo hace, asegúrese de utilizar una de las constantes
flags
que no sobrescriban los valores, como
EXTR_SKIP
. Tenga en cuenta también que ahora
debe extraer en el mismo orden que el definido en variables_order del php.ini.