# extract

(PHP 4, PHP 5, PHP 7, PHP 8)

extract — Importar variables a la tabla de símbolos actual desde un array

### Descripción

extract(array `&$array`, int `$flags` = EXTR_OVERWRITE, string `$prefix` = `null`): int

Importa variables desde un array a la tabla de símbolos actual.

Comprueba cada clave para ver si tiene un nombre de variable válido. También comprueba las colisiones con las variables existentes en la tabla de símbolos.

Advertencia

No use extract() sobre datos no confiables, como la entrada del usuario (p.e. $_GET, $_FILES).

### Parámetros

`array`

  Un array asociativo. Esta función trata a las claves como nombres de variables y a los valores como valores de variables. Por cada par clave/valor creará una variable en la tabla de símbolos actual, sujeta a los parámetros `flags` y `prefix`.

  Se debe usar un array asociativo; un array indexado numéricamente no producirá resultados a menos que se use `EXTR_PREFIX_ALL` o `EXTR_PREFIX_INVALID`.

`flags`

  La manera en que las claves no-válidas/numéricas y las colisiones son tratadas está determinda por el parámetro `flags`. Puede ser uno de los valores siguientes:

  `EXTR_OVERWRITE`
    Si hay una colisión, sobrescribe la variable existente.
  `EXTR_SKIP`
    Si hay una colisión, no sobrescribe la variable existente.
  `EXTR_PREFIX_SAME`
    Si hay una colisión, prefija el nombre de la variable con `prefix`.
  `EXTR_PREFIX_ALL`
    Prefija todos los nombres de variables con `prefix`.
  `EXTR_PREFIX_INVALID`
    Sólo prefija los nombres de variables no-válidas/numéricas con `prefix`.
  `EXTR_IF_EXISTS`
    Sobrescribe la variable sólo si ya existe en la tabla de símbolos actual, de otro modo no hace nada. Esto es útil para definir una lista de variables válidas y después extraer sólo aquellas variables que se definieron fuera de $_REQUEST, por ejemplo.
  `EXTR_PREFIX_IF_EXISTS`
    Crea nombres de variables con prefijo sólo si la versión no prefijada de la misma variable existe en la tabla de símbolos actual.
  `EXTR_REFS`
    Extrae las variables como referencias. Esto significa que los valores de las variables importadas están todavía referenciados por los valores del parámetro `array`. Se puede usar esta bandera por sí misma o combinarla con cualquier otra bandera usando el operador OR en `flags`.

  Si no se especifica `flags`, se asume que es `EXTR_OVERWRITE`.

`prefix`

  Observe que `prefix` sólo es requerido si `flags` es `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, ésta no es importada a la tabla de símbolos actual. Los prefijos son separados de las claves del array mediante un caracter de subrayado.

### Valores devueltos

Devuelve el número de variables importadas con éxito a la tabla de símbolos.

### Ejemplos

Ejemplo #1 Ejemplo de extract()

Un posible uso de extract() es importar a la tabla de símbolos las variables contenidas en un array asociativo devuelto por wddx_deserialize().

`<?php
/* Se supone que $var_array es un array devuelto desde
wddx_deserialize */
$tamaño = "grande";
$var_array = array("color" => "azul",
"tamaño" => "medio",
"forma" => "esfera");
extract($var_array, EXTR_PREFIX_SAME, "wddx");
echo "$color, $tamaño, $forma, $wddx_tamaño\n";
?>`

El resultado del ejemplo sería:

    azul, grande, esfera, medio

El $tamaño no se ha sobrescrito ya que se especificó `EXTR_PREFIX_SAME`, lo que resulta en la creación de $wddx_tamaño. Si se hubiera especificado `EXTR_SKIP`, $wddx_tamaño no se habría creado. `EXTR_OVERWRITE` causaría que $tamaño tuviera el valor "medio", y `EXTR_PREFIX_ALL` resultaría en variables nuevas llamadas $wddx_color, $wddx_tamaño, y $wddx_forma.

### Notas

Advertencia

No use extract() en datos que no son de confianza, como las entradas de usuario (esto es, $_GET, $_FILES, etc.). Si lo hace, asegúrese de usar uno de los valores de `flags` que no sobrescriban, como `EXTR_SKIP`, y sepa que debería realizar la extracción en el mismo orden que fue definido en variables_order dentro de php.ini.

### Ver también

- compact() - Crear un array que contiene variables y sus valores
- list() - Asignar variables como si fueran un array