array ( 0 => 'index.php', 1 => 'PHP Manual', ), 'head' => array ( 0 => 'UTF-8', 1 => 'es', ), 'this' => array ( 0 => 'function.extract.php', 1 => 'extract', ), 'up' => array ( 0 => 'ref.array.php', 1 => 'Funciones de Arrays', ), 'prev' => array ( 0 => 'function.end.php', 1 => 'end', ), 'next' => array ( 0 => 'function.in-array.php', 1 => 'in_array', ), 'alternatives' => array ( ), 'source' => array ( 'lang' => 'es', 'path' => 'reference/array/functions/extract.xml', ), ); $setup["toc"] = $TOC; $setup["toc_deprecated"] = $TOC_DEPRECATED; $setup["parents"] = $PARENTS; manual_setup($setup); ?>
(PHP 4, PHP 5, PHP 7, PHP 8)
extract — Importar variables a la tabla de símbolos actual desde un array
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.
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
EXTR_SKIP
EXTR_PREFIX_SAME
prefix
.
EXTR_PREFIX_ALL
prefix
.
EXTR_PREFIX_INVALID
prefix
.
EXTR_IF_EXISTS
EXTR_PREFIX_IF_EXISTS
EXTR_REFS
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.
Devuelve el número de variables importadas con éxito a la tabla de símbolos.
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.
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.