This function is used to import variables from an array
into the current symbol table. It takes an associative array
var_array and 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
extract_type and
prefix parameters.
注: Beginning with version 4.0.5, this function returns the number of variables extracted.
注: EXTR_IF_EXISTS and EXTR_PREFIX_IF_EXISTS was introduced in version 4.2.0.
注: EXTR_REFS was introduced in version 4.3.0.
extract() checks each key to see
whether it has a valid variable name. It also checks for
collisions with existing variables in the symbol table. The
way invalid/numeric keys and collisions are treated is
determined by the
extract_type. It can be one of the following
values:
If there is a collision, overwrite the existing
variable.
If there is a collision, don't overwrite the
existing variable.
If there is a collision, prefix the variable name
with prefix.
Prefix all variable names with prefix. Beginning with PHP
4.0.5, this includes numeric variables as well.
Only prefix invalid/numeric variable names with
prefix. This flag was
added in PHP 4.0.5.
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. This flag was added in
PHP 4.2.0.
Only create prefixed variable names if the
non-prefixed version of the same variable exists in the
current symbol table. This flag was added in PHP
4.2.0.
Extracts variables as references. This effectively
means that the values of the imported variables are
still referencing the values of the var_array parameter. You can
use this flag on its own or combine it with any other
flag by OR'ing the
extract_type. This flag was added in PHP
4.3.0.
If extract_type is not
specified, it is assumed to be EXTR_OVERWRITE.
Note that prefix is
only required if
extract_type 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.
extract() returns the number of
variables successfully imported into the symbol table.
A possible use for extract() is
to import into the symbol table variables contained in an
associative array returned by
wddx_deserialize().
The above example will produce:
blue, large, sphere, medium |
The $size wasn't overwritten,
because we specified EXTR_PREFIX_SAME, which resulted in $wddx_size being created. If EXTR_SKIP
was specified, then $wddx_size wouldn't even have been
created. EXTR_OVERWRITE would have caused $size to have value "medium", and
EXTR_PREFIX_ALL would result in new variables being named $wddx_color,
$wddx_size, and
$wddx_shape.
You must use an associative array, a numerically indexed
array will not produce results unless you use EXTR_PREFIX_ALL
or EXTR_PREFIX_INVALID.
See also compact().