extract

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

extractImporta las variables en la tabla de símbolos

Descripción

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

Importa las variables en la tabla de símbolos.

extract() verifica cada clave para controlar si tiene un nombre de variable válido. También verifica las colisiones con variables existentes en la tabla de símbolos.

Advertencia

No utilice extract() en datos no seguros como las entradas de usuario (ex. $_GET, $_FILES).

Parámetros

array

Un array asociativo. Esta función crea las variables cuyos nombres son los índices de este array, y les asigna el valor asociado. Para cada par clave/valor, extract() crea una variable, con los parámetros flags y prefix.

Debe utilizar un array asociativo. Un array indexado numéricamente no producirá ningún resultado, a menos que se utilice la opción EXTR_PREFIX_ALL o EXTR_PREFIX_INVALID.

flags

El tratamiento de las colisiones es determinado por flags. Este parámetro puede tomar uno de los siguientes valores:

EXTR_OVERWRITE
En caso de colisión, sobrescribir la variable existente.
EXTR_SKIP
En caso de colisión, no sobrescribir la variable existente.
EXTR_PREFIX_SAME
En caso de colisión, añadir el prefijo prefix, y crear una nueva variable.
EXTR_PREFIX_ALL
Añadir el prefijo prefix para todas las variables.
EXTR_PREFIX_INVALID
Prefijar únicamente las variables con nombres inválidos o numéricos con el prefijo prefix.
EXTR_IF_EXISTS
Sobrescribir la variable únicamente si ya existe en la tabla de símbolos, y, de lo contrario, no hacer nada. Esto es práctico para definir una lista de variables válidas, y luego extraer del array los valores que ya se han definido gracias a $_REQUEST, por ejemplo.
EXTR_PREFIX_IF_EXISTS
Crear solo variables prefijadas, si la versión no prefijada de la misma variable existe en la tabla de símbolos actual.
EXTR_REFS
Extraer las variables como referencias. Esto significa que los valores de las variables importadas siempre hacen referencia a los valores de las variables originales en el parámetro array. Se puede utilizar esta opción sola, o bien combinarla con otras opciones con el operador OR, en el parámetro flags.

Si flags se omite, extract() utilizará EXTR_OVERWRITE por omisión.

prefix

Tenga en cuenta que prefix solo es necesario para los siguientes valores de flags: 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, no se importará en la tabla de símbolos. Los prefijos se separan automáticamente del índice del array por un carácter de subrayado.

Valores devueltos

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

Ejemplos

Ejemplo #1 Ejemplo con extract()

Un uso posible de la función extract() es la exportación a la tabla de símbolos de arrays de variables devueltos por wddx_deserialize().

<?php

/* Supongamos que $var_array es un array devuelto por
wddx_deserialize */

$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 resultado del ejemplo sería:

blue, large, sphere, medium

La variable $size no fue sobrescrita, ya que se había especificado el parámetro EXTR_PREFIX_SAME, que permitió la creación de $wddx_size. Si EXTR_SKIP hubiera sido utilizado, entonces $wddx_size no habría sido creado. Con EXTR_OVERWRITE, $size habría tomado el valor "medium", y con EXTR_PREFIX_ALL, las variables creadas habrían sido $wddx_color, $wddx_size y $wddx_shape.

Notas

Advertencia

No utilice extract() en datos desconocidos, como los datos de usuario (i.e. $_GET, $_FILES, etc.). Si lo hace, asegúrese de utilizar una de las constantes flags que no sobrescriban los valores, como EXTR_SKIP. Tenga en cuenta también que ahora debe extraer en el mismo orden que el definido en variables_order 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