Blog de programación, errores, soluciones

Chose Language:
Author: Admin/Publisher |not finished | checked

PHP extract function

Imports variables into the current symbol table from an associative array. This can be a bit tricky to understand, but you can think of it as doing the reverse of compact. Let’s take a look at the first example.

If my associative array looks like what’s shown in the table:

table that represent an array

You will obtain the variables $nombre, $apellido, and $edad with the values "Pepe", "Galeano", and 42, respectively.

Description / Descripción
extract(array &$array, int $flags = EXTR_OVERWRITE, string $prefix = ""): int
Warning – Do not use the extract function on untrusted data, such as user-input data, for example, $_GET, $_FILES, $_POST, and others.


$array – an asociative array

In case you’re not using an associative array but a numeric indexed array, you should use the constants EXTR_PREFIX_ALL or EXTR_PREFIX_INVALID as flags.

$flags – This parameter determines how non-valid/numeric keys and collisions are handled. EXTR_OVERWRITE is the default flag.

  • EXTR_OVERWRITE – If there is a collision, it overwrites the existing variable in the current scope with the value from the associative array. For example, if $x = 101 and the associative array has a value “x” => 207, now $x will have the value 207.
  • EXTR_SKIP – If there is a variable that collides, it will not be overwritten.
  • EXTR_PREFIX_SAME – If there is a collision, it prefixes the variable name with the specified prefix in $prefix.
  • EXTR_PREFIX_ALL – Prefixes all variable names with the value given in $prefix.
  • EXTR_PREFIX_INVALID – Only prefixes non-valid/numeric variable names with the value of $prefix.
  • EXTR_IF_EXISTS – Overwrites the variable only if it already exists in the current symbol table; otherwise, it does nothing. This is useful for defining a list of valid variables and then extracting only those variables that were defined outside of $_REQUEST, for example.
  • EXTR_PREFIX_IF_EXISTS – Creates variable names with a prefix only if the unprefixed version of the same variable exists in the current symbol table.
  • EXTR_REFS – Extracts variables as references. This means that the values of the imported variables are still referenced by the values in the parameter array. You can use this flag on its own or combine it with any other flag using the OR operator in flags.

$prefix – The value with which the variable will be prefixed if necessary. The prefix is separated from the key name by an underscore (_).

These are the flags for which you will need to use $prefix:



It returns an integer that is the number of variables that were successfully imported.


// Un arreglo asociativo con algunas variables
$data = [
    'marca' => 'citroen',
    'precio' => '19500',
    'moneda' => 'euros',

// Usando extract para importar las variables

// Ahora puedes usar las variables como si se hubieran declarado individualmente
echo "Marca:".$marca."<br/>";
echo "Nombre: $nombre<br/>";
echo "Precio: $precio<br/>";
echo "Moneda: $moneda<br/>";
Nombre: c4
Precio: 19500
Moneda: euros
Category: en-php
Something wrong? If you found an error or mistake in the content you can contact me on Twitter | @luisg2249_luis.
Last 4 post in same category