(PHP 4, PHP 5)
extract — Importa variables a la tabla de símbolos desde una matriz
Esta función se utiliza para importar variables desde una matriz a la tabla de símbolos actual. Toma la matriz asoiativa matriz_vars y trata las claves como nombres de variable y los valores como los valores de éstas. Para cada par clave/valor creará una variable en la tabla de símbolos actual, sujeto a los parámetros tipo_extraccion y prefijo .
Note: Empezando de la versión 4.0.5, esta función regresa el número de variables extraídas.
Note: EXTR_IF_EXISTS y EXTR_PREFIX_IF_EXISTS fueron introducidas en la versión 4.2.0.
Note: EXTR_REFS fue introducida en la versión 4.3.0.
extract() controla las colisiones con las variables que ya existen. La forma de tratar éstas se determina por el tipo_extraccion . Puede tener únicamente uno de los siguientes valores:
Si no se especifica tipo_extraccion , se asume que vale EXTR_OVERWRITE.
Nótese que el prefijo sólo se necesita si tipo_extraccion vale EXTR_PREFIX_SAME, EXTR_PREFIX_ALL, EXTR_PREFIX_INVALID o EXTR_PREFIX_IF_EXISTS. Si el resultado con prefijo no es un nombre de variable valido, no es importado en la tabla de símbolos.
extract() regresa el número de variables exitosamente importadas en la tabla de símbolos.
No use extract() en datos no confiables, como entradas de usuario ($_GET, ...). pero si lo hace, por ejemplo, si quiere correr codigo anterior que confía temporalmente en register_globals, asegurese de que usa una de los valores de no-sobreescribir del parámetro tipo_extraccion tales como EXTR_SKIP y asegurese de extrar las variables $_SERVER, $_SESSION, $_COOKIE, $_POST y $_GET ese orden.
Un uso posible para extract sería importar en la tabla de símbolos las variables contenidas en la matriz asociativa que devuelve wddx_deserialize().
Example#1 Ejemplo de extract()
<?php
/* Suponemos que $matriz_var es una matriz devuelta por
wddx_deserialize */
$tamano = "grande";
$matriz_var = array ("color" => "azul",
"tamano" => "media",
"forma" => "esfera");
extract ($matriz_var, EXTR_PREFIX_SAME, "wddx");
print "$color, $tamano, $forma, $wddx_tamano\n";
?>
El resultado del ejemplo seria:
azul, grande, esfera, media
La variable $tamano no fue sobreescrita porque especificamos EXTR_PREFIX_SAME, que provocó la creación de $wddx_tamano. Si se hubiera especificado EXTR_SKIP, $wddx_tamano ni siquiera habría sido creada. EXTR_OVERWRITE habría provocado que $tamano tuviera el valor "media", y EXTR_PREFIX_ALL habría provocado que aparecieran nuevas variables llamadas $wddx_color, $wddx_tamano, y $wddx_forma.
Debe usar matrices asociativas, las matrices numéricamente indexadas no producirán resultados a menos que use EXTR_PREFIX_ALL o EXTR_PREFIX_INVALID.
Vea también compact().