extract
(PHP 4, PHP 5, PHP 7, PHP 8)
extract — Importa variáveis para a tabela de símbolos a partir de um array
Descrição
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.
Parâmetros
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
eprefix
.É necesário usar um array associativo, um array numericamente indexado não produzirá resultados até que seja usa a opção
EXTR_PREFIX_ALL
ouEXTR_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
- Se houver uma colisão, sobrescreve a variável existente.
EXTR_SKIP
- Se houver uma colisão, não sobrescreve a variável existente.
EXTR_PREFIX_SAME
-
Se houver uma colisão, adiciona um prefixo ao nome da
variável definido pelo argumento
prefix
. EXTR_PREFIX_ALL
-
Adiciona um prefixo ao nome de todas as variáveis definido por
prefix
. EXTR_PREFIX_INVALID
-
Adiciona um prefixo definido por
prefix
apenas para variáveis como nomes inválidos ou numéricos. EXTR_IF_EXISTS
- Só sobrescreve a variável se ela já existe na tabela de símbolos corrente, caso contrário, não faz nada. Isso é útil quando se quer definir uma lista de variáveis válidas e então extrair só as que foram definidas em $_REQUEST, por exemplo.
EXTR_PREFIX_IF_EXISTS
- Só cria nomes de variáveis usando o prefixo se na tabela de símbolos já existe uma variável com o nome sem esse prefixo.
EXTR_REFS
-
Extrai variáveis como referências, ou seja, os valores das variáveis
importadas ainda estarão referenciando os valores do parâmetro
array
. Essa opção pode ser usada sozinha ou em conjunto com as outras usando o operador 'ou' emflags
.
Se
flags
não for especificado, é assumido o valorEXTR_OVERWRITE
. prefix
-
Note que
prefix
só é necessário seflags
forEXTR_PREFIX_SAME
,EXTR_PREFIX_ALL
, ouEXTR_PREFIX_INVALID
ouEXTR_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 (_).
Valor Retornado
Retorna o número de variáveis importadas com sucesso para a tabela de símbolos.
Exemplos
Example #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.
Notas
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.