extract
En esta página
extract
Importa variables al símbolo actual desde un array
Descripción#
extract(array $array, [int $flags], [string $prefix]): int
```php
Importa variables desde un array a la tabla de símbolos actual.
Verifica cada clave para determinar si tiene un nombre de variable válido. También verifica colisiones con variables existentes en la tabla de símbolos.
> [!WARNING]
> No utilice `extract` con datos no confiables, como entrada de usuario (ej. `$_GET`, `$_FILES`).
## Parámetros
`array`
Un array asociativo. Esta función trata las claves como nombres de variables y los valores como valores de variables. Para cada par clave/valor creará una variable en la tabla de símbolos actual, sujeto a los parámetros `flags` y `prefix`.
Debe usar un array asociativo; un array indexado numéricamente no producirá resultados a menos que use `EXTR_PREFIX_ALL` o `EXTR_PREFIX_INVALID`.
`flags`
La forma en que se tratan las claves inválidas/numéricas y las colisiones se determina por los `flags` de extracción. Puede ser uno de los siguientes valores:
`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, antepone el nombre de la variable con `prefix`.
`EXTR_PREFIX_ALL`
Antepone todos los nombres de variables con `prefix`.
`EXTR_PREFIX_INVALID`
Solo antepone nombres de variables inválidas/numéricas con `prefix`.
`EXTR_IF_EXISTS`
Solo sobrescribe la variable si ya existe en la tabla de símbolos actual, de lo contrario no hace nada. Esto es útil para definir una lista de variables válidas y luego extraer solo esas variables que ha definido de `$_REQUEST`, por ejemplo.
`EXTR_PREFIX_IF_EXISTS`
Solo crea nombres de variables con prefijo si la versión sin prefijo de la misma variable existe en la tabla de símbolos actual.
`EXTR_REFS`
Extrae variables como referencias. Esto significa efectivamente que los valores de las variables importadas aún hacen referencia a los valores del parámetro `array`. Puede usar este flag por sí solo o combinarlo con cualquier otro flag mediante OR con los `flags`.
Si `flags` no está especificado, se asume que es `EXTR_OVERWRITE`.
`prefix`
Tenga en cuenta que `prefix` solo es requerido si `flags` es `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 válido, no se importará a la tabla de símbolos. Los prefijos se separan automáticamente de la clave del array por un carácter de guión bajo.
## Valores devueltos
Devuelve el número de variables importadas con éxito a la tabla de símbolos.
## Ejemplos
Ejemplo de `extract`
```php
El ejemplo anterior mostrará:
blue, large, sphere, medium
La variable $size no fue sobrescrita porque especificamos EXTR_PREFIX_SAME, lo que resultó en la creación de $wddx_size. Si se hubiera especificado EXTR_SKIP, entonces $wddx_size ni siquiera se habría creado. EXTR_OVERWRITE habría hecho que $size tuviera el valor "medium", y EXTR_PREFIX_ALL habría resultado en nuevas variables llamadas $wddx_color, $wddx_size, y $wddx_shape.
Notas#
[!WARNING] No utilice
extractcon datos no confiables, como entrada de usuario (ej.$_GET,$_FILES, etc.). Si lo hace, asegúrese de usar uno de los valores deflagsque no sobrescriban, comoEXTR_SKIPy tenga en cuenta que debe extraer en el mismo orden que está definido en variables_order dentro delphp.ini.
Véase también#
compact, list