Blog de Gonzalo

EXTRACT

Hace poco me enteré de la función extract de php y lo que hace es convertir cada elemento de un array en variables y se cogen los índices de dicho array para nombrar las variables comprobando que cada tiene un nombre de variable válido y las colisiones con las variables existentes en la tabla de símbolos.


int extract ($nombre_array ,$flags = EXTR_OVERWRITE , $prefix = NULL ) 

En el ejemplo anterior se muestra la llamada de la función. Donde $nombre_array es el array que se van a extrapolar los índices, los $flags son las diferentes opciones que tiene la función extract y $prefix el prefijo que van a tener las variables.
Los $flags disponibles son:
  • 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.
Una utilidad de esta función es cuando tenemos un formulario y se quieren guardar las variables que vienen por el array $_POST. Todos hemos hecho algo como:
$nombre = $_POST['nombre'];
$email = $_POST['email'];
$telefono = $_POST['telefono'];

Si el formulario tiene muchos campos se puede hacer algo como:

foreach($_POST As $key=>$val){ 
$$key = $val; }
variables variables.Pero se peude ir un paso más allá con la ventaja de reducir considerablemente el código, ganando en eficiencia, que es usar la función extract:
extract($_POST);

Tan simple como ésto.

Compartir en twitter