0

Extraindo variáveis a partir de arrays com a função extract()

criado por Edson Porto em 14/07/2007 7:48am
Sintaxe da função:

extract(array, extract_type, prefix);

array: "Sua variavel array".
extract_type: "O modo como a variável criada será tratada".
prefix: "Conforme o parâmetro que você fornecer em "extract_type" você pode definir um prefixo que vai anteceder as novas variáveis criadas.

Veja abaixo os parâmetros aceitos em 'extract_type':

EXTR_OVERWRITE
Se existir uma variável com o mesmo nome, sobrescreve a variável existente.

EXTR_SKIP
Se existir uma variável com o mesmo nome, não sobrescreve a variável existente.

EXTR_PREFIX_SAME
Se existir uma variável com o mesmo nome, 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. Essa opção foi adicionada no PHP 4.2.0.

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. Essa opção foi adicionada no PHP 4.2.0.

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 var_array. Essa opção pode ser usada sozinha ou em conjunto com as outras usando o operador 'ou' em extract_type. Essa opação foi adicionada no PHP 4.3.0.

Vamos agora a um exemplo prático:

<?php
extract($linha, EXTR_PREFIX_ALL, "p");
// no exemplo acima todas as variáveis terão o prefixo "p":
echo $p_titulo;
echo $p_sumario;
?>

<?php
extract($linha, EXTR_PREFIX_SAME, "p");
//Já nesse caso terão prefixo somente as variáveis cujo nome já existia.
?>

Vale lembrar que esta função funciona somente com array associativos, caso sua array tenha somente índices numéricos não será possível utilizá-la.

Comentários:

Mostrando 1 - 7 de 7 comentários
Felipe disse:
Puxa vida... vc me fez economizar umas 50 linhas de cod. Vlw mesmo cara !
21/09/2010 4:43pm (~13 anos atrás)

SALVOU MINHA VIDA =]
18/08/2007 6:28pm (~16 anos atrás)

Iuri Neumann disse:
muito maneiro... valeu... vai ajudar bastante mesmo...
26/07/2007 9:26am (~16 anos atrás)

Muito bom Edson, apenas uma coisa com relação ao seu último comentário.. Para esta função funcionar com arrays de índices numéricos basta adicionar um prefixo com os parâmetros da própria função.. ex:

<?php

$a = array(1 => 'a', 2 => 'b', 3 => 'c');
extract($a, EXTR_PREFIX_ALL, 'n');
echo $n_1, $n_2, $n_3; // Imprime abc

?>

O fato de utilizar a função para este tipo de índice sem o prefixo não é permitido pois no PHP não são permitidas variáveis que se iniciam com número... adicione o prefixo e pronto!

Abraços!
26/07/2007 4:35am (~16 anos atrás)

=]
17/07/2007 3:30pm (~17 anos atrás)

Diego Hellas disse:
O Anderson falou tudo... simples e pratico.. mas que muita gente não conhece..

Abraços!
16/07/2007 10:50am (~17 anos atrás)

Simples e ùTil ;D
Obrg
15/07/2007 9:20pm (~17 anos atrás)

Novo Comentário:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)