extract

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

extractImporta variables al símbolo actual desde un array

Descripción

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

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.

Advertencia

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 #1 Ejemplo de extract()

<?php
$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 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

Advertencia

No utilice extract() con datos no confiables, como entrada de usuario (ej. $_GET, $_FILES, etc.). Si lo hace, asegúrese de usar uno de los valores de flags que no sobrescriban, como EXTR_SKIP y tenga en cuenta que debe extraer en el mismo orden que está definido en variables_order dentro del php.ini.

Ver también

  • compact() - Crea un array a partir de variables y su valor
  • list() - Asigna variables como si fueran un array