(PHP 4, PHP 5, PHP 7, PHP 8)
extract — Importa variáveis para a tabela de símbolos a partir de um array
Importa variáveis a partir de um array para a tabela de símbolos atual.
Verifica se cada chave tem um nome válido de variável. Também verifica por colisões com variáveis já existentes na tabela de símbolos.
array
Um array associativo. Esta função trata chaves como nomes de variáveis
e valores como os valores das variáveis. Para cada par chave/valor ela cria
uma variável na tabela de símbolos atual, seguindo os parâmetros
flags
e prefix
.
É necesário usar um array associativo, um array numericamente indexado
não produzirá resultados até que seja usa a opção EXTR_PREFIX_ALL
ou
EXTR_PREFIX_INVALID
.
flags
A forma como chaves inválidas/numéricas e colisões são tratadas é determinada
pelas opções de extração definidas no parâmetro flags
. Pode ser um dos
seguintes valores:
EXTR_OVERWRITE
EXTR_SKIP
EXTR_PREFIX_SAME
prefix
.
EXTR_PREFIX_ALL
prefix
.
EXTR_PREFIX_INVALID
prefix
apenas
para variáveis como nomes inválidos ou numéricos.
EXTR_IF_EXISTS
EXTR_PREFIX_IF_EXISTS
EXTR_REFS
array
. Essa opção pode ser usada
sozinha ou em conjunto com as outras usando o operador 'ou' em
flags
.
Se flags
não for especificado, é assumido
o valor EXTR_OVERWRITE
.
prefix
Note que prefix
só é necessário se
flags
for EXTR_PREFIX_SAME
,
EXTR_PREFIX_ALL
, ou EXTR_PREFIX_INVALID
ou
EXTR_PREFIX_IF_EXISTS
. Se o nome com o prefixo
não for um nome de variável válido, ela não será importada para a tabela
de símbolos. Prefixos são automaticamente separados da chave do array pelo
caractere de sublinhado (_).
Retorna o número de variáveis importadas com sucesso para a tabela de símbolos.
Exemplo #1 Exemplo da extract()
Uma possível utilização de extract() é na importação de variáveis contidas num array associativo retornado pela função wddx_deserialize().
<?php
/* Suponha que $var_array é um array retornado pela função
wddx_deserialize */
$size = "large";
$var_array = array(
"color" => "blue",
"size" => "medium",
"shape" => "sphere"
);
extract($var_array, EXTR_PREFIX_SAME, "wddx");
echo "$color, $size, $shape, $wddx_size\n";
?>
O exemplo acima produzirá:
blue, large, sphere, medium
O $size não foi sobrescrito, porque foi especificada a opção
EXTR_PREFIX_SAME
, o que resultou na criação da variável
$wddx_size. Se EXTR_SKIP
fosse
utilizada, então $wddx_size não seria criada.
EXTR_OVERWRITE
teria feito com que
$size tivesse o valor "medium", e
EXTR_PREFIX_ALL
resultaria em novas variáveis
com os nomes $wddx_color, $wddx_size e
$wddx_shape.
Não use extract() em dados não confiáveis, como
entrada de usuário
(por exemplo, $_GET, $_FILES, etc.).
Se usar, certifique-se de que está usando um dos valores de
flags
que não fazem sobrescrita como
EXTR_SKIP
e tenha cuidado para que extraia
na mesma ordem que é definida em
variables_order no
php.ini.