extract

(PHP 3>= 3.0.7, PHP 4 )

extract --  Importa variáveis para a tabela de símbolos a partir de um array

Descrição

int extract ( array var_array [, int extract_type [, string prefix]])

Essa é usada para importar variáveis a partir de um array para a tabela de símbolos corrente. Recebe o array associativo var_array e trata as suas chaves como os nomes das variáveis e os valores como valores das variáveis. Para cada par chave/valor ele criará uma variável na tabela de símbolos corrente, seguindo os parâmetros extract_type e prefix.

Nota: Desde a versão 4.0.5 essa função retorna o número de variáveis extraídas.

extract() checa se cada chave do array constituinum nome de variável válido e por colisões com as variáveis já existentes na tabela de símbolos. O modo com que chaves inválidas ou númericas e colisões são tratadas é determinado pelo argumento extract_type. Esse argumento pode receber os 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. Desde o PHP 4.0.5 estão incluídos nomes numéricos.

EXTR_PREFIX_INVALID

Adiciona um prefixo definido por prefix apenas para variáveis como nomes inválidos ou numéricos. Essa opção foi adicionada no PHP 4.0.5.

Se extract_type não for especificado, é assumido o valor EXTR_OVERWRITE por padrão.

Note que prefix só é necessário se extract_type for EXTR_PREFIX_SAME, EXTR_PREFIX_ALL, ou EXTR_PREFIX_INVALID. 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.

extract() retorna o número de variáveis importadas com sucesso para a tbela de símbolos.

Um uso comum de extract e na importação de variáveis contidas num array associativo retornado pela função wddx_deserialize().

Exemplo 1. Exemplo de extract()

<?php

/* Suponha que $var_array &eacute; um array retornado pela fun&ccedil;&atilde;o
   wddx_deserialize */

$tamanho = "grande";
$var_array = array ("cor" => "azul",
                    "tamanho"  => "medio",
                    "forma" => "esfera");
extract ($var_array, EXTR_PREFIX_SAME, "wddx");

print "$cor, $tamanho, $forma, $wddx_tamanho\n";

?>

O exemplo acima produziria:
azul, grande, esfera, medio

O $tamanho não foi sobrescrito, porque nós especificamos EXTR_PREFIX_SAME, o que resultou na criação da variável $wddx_tamanho. Se EXTR_SKIP fosse utilizado, então $wddx_tamanho não seria criada. EXTR_OVERWRITE teria feito com que $size tivesse o valor "medio", e EXTR_PREFIX_ALL resultaria em novas variáveis com os nomes $wddx_cor, $wddx_tamanho, e $wddx_forma.

Você deve usar um arra associativo, um array indexado numericamente não produzirá resultados.

Veja também: compact().