end
in_array
Array Functions
PHP Manual

# extract

(PHP 4, PHP 5)

extract — Importa variables a la tabla de símbolos desde una matriz

### Descripción

void extract ( array `$matriz_vars` [, int `$tipo_extraccion` [, string `$prefijo` ]] )

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:

EXTR_OVERWRITE
  Si hay colisión, sobreescribe la variable existente.
EXTR_SKIP
  Si hay colisión, no sobreescribas la variable existente.
EXTR_PREFIX_SAME
  Si hay una colisión, añade el `prefijo` a la nueva variable.
EXTR_PREFIX_ALL
  Añade el `prefijo` a todas las variables.
`EXTR_PREFIX_INVALID`
  Solo agrega el `prefijo` a nombres de variables invalidas/numéricas. Este fue agregado en PHP 4.0.5.
`EXTR_IF_EXISTS`
  Solo sobreescribe la variable si ya existe en la tabla de símbolos actual, de otra manera no hace nada. Esto es útil para definir una lista de variables validas y entonces extraer solo aquellas variables que esten definidas fuera de $_REQUEST por ejemplo. Esta bandera fue agregada en PHP 4.2.0.
`EXTR_PREFIX_IF_EXISTS`
  Solo crea los nombres de variables con el prefijo si la versión de la variable sin prefijo existe en la tabla de símbolos. Esta bandera fue agregada en PHP 4.2.0.
`EXTR_REFS`
  Extrae las variables como referencias. Esto efectivamente significa que los valores de las variables importadas están aún referenciando a los valores del parámetro `matriz_var` . Puede usar esta bandera por sí sola o combinada con cualquier otra bandera haciendo (OR) el parámetro `tipo_extraccion` . Esta bandera fue agregada en PHP 4.3.0.

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.

Warning

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().

end
in_array
Array Functions
PHP Manual