(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_OVERWRITEEXTR_SKIPEXTR_PREFIX_SAMEprefix.
EXTR_PREFIX_ALLprefix.
EXTR_PREFIX_INVALIDprefix apenas
para variáveis como nomes inválidos ou numéricos.
EXTR_IF_EXISTSEXTR_PREFIX_IF_EXISTSEXTR_REFSarray. 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.