extract

Import variables into the current symbol table from an array

Syntax

extract ( array &$array [, int $flags = EXTR_OVERWRITE [, string $prefix = NULL ]] ) : int

Parameters

array

An associative array. This function treats keys as variable names and values as variable values. For each key/value pair it will create a variable in the current symbol table, subject to flags and prefix parameters.

You must use an associative array; a numerically indexed array will not produce results unless you use EXTR_PREFIX_ALL or EXTR_PREFIX_INVALID.

flags

The way invalid/numeric keys and collisions are treated is determined by the extraction flags. It can be one of the following values:

EXTR_OVERWRITE If there is a collision, overwrite the existing variable.
EXTR_SKIP If there is a collision, don't overwrite the existing variable.
EXTR_PREFIX_SAME If there is a collision, prefix the variable name with prefix.
EXTR_PREFIX_ALL Prefix all variable names with prefix.
EXTR_PREFIX_INVALID Only prefix invalid/numeric variable names with prefix.
EXTR_IF_EXISTS Only overwrite the variable if it already exists in the current symbol table, otherwise do nothing. This is useful for defining a list of valid variables and then extracting only those variables you have defined out of $_REQUEST, for example.
EXTR_PREFIX_IF_EXISTS Only create prefixed variable names if the non-prefixed version of the same variable exists in the current symbol table.
EXTR_REFS Extracts variables as references. This effectively means that the values of the imported variables are still referencing the values of the array parameter. You can use this flag on its own or combine it with any other flag by OR'ing the flags.

If flags is not specified, it is assumed to be EXTR_OVERWRITE.

prefix

Note that prefix is only required if flags is EXTR_PREFIX_SAME, EXTR_PREFIX_ALL, EXTR_PREFIX_INVALID or EXTR_PREFIX_IF_EXISTS. If the prefixed result is not a valid variable name, it is not imported into the symbol table. Prefixes are automatically separated from the array key by an underscore character.

Return

Returns the number of variables successfully imported into the symbol table.

Examples

1 · array

<?

$b = 10;

$array = array("a" => 0, "b" => 1);

$return = extract($array);

echo $return . PHP_EOL;
echo "$a, $b";

?>
2
0, 1

2 · flags

<?

$b = 10;

$array = array("a" => 0, "b" => 1);
$flags = EXTR_SKIP;

$return = extract($array, $flags);

echo $return . PHP_EOL;
echo "$a, $b";

?>
1
0, 10

3 · prefix

<?

$b = 10;

$array = array("a" => 0, "b" => 1);
$flags = EXTR_PREFIX_SAME;
$prefix = "myprefix";

$return = extract($array, $flags, $prefix);

echo $return . PHP_EOL;
echo "$a, $b, $myprefix_b";

?>
2
0, 10, 1

array

array_change_key_case

array_chunk

array_column

array_combine

array_count_values

array_diff

array_diff_assoc

array_diff_key

array_diff_uassoc

array_diff_ukey

array_fill

array_fill_keys

array_filter

array_flip

array_intersect

array_intersect_assoc

array_intersect_key

array_intersect_uassoc

array_intersect_ukey

array_key_exists

array_key_first

array_key_last

array_keys

array_map

array_merge

array_merge_recursive

array_multisort

array_pad

array_pop

array_product

array_push

array_rand

array_reduce

array_replace

array_replace_recursive

array_reverse

array_search

array_shift

array_slice

array_splice

array_sum

array_udiff

array_udiff_assoc

array_udiff_uassoc

array_uintersect

array_uintersect_assoc

array_uintersect_uassoc

array_unique

array_unshift

array_values

array_walk

array_walk_recursive

arsort

asort

compact

count

current

end

in_array

key

key_exists

krsort

ksort

list

natcasesort

natsort

next

pos

prev

range

reset

rsort

shuffle

sizeof

sort

uasort

uksort

usort

PHP

Home Menu