<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <HTML ><HEAD ><TITLE >extract</TITLE ><META NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" TITLE="Manual do PHP" HREF="index.html"><LINK REL="UP" TITLE="Arrays" HREF="ref.array.html"><LINK REL="PREVIOUS" TITLE="end" HREF="function.end.html"><LINK REL="NEXT" TITLE="in_array" HREF="function.in-array.html"><META HTTP-EQUIV="Content-type" CONTENT="text/html; charset=UTF-8"></HEAD ><BODY CLASS="refentry" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#840084" ALINK="#0000FF" ><DIV CLASS="NAVHEADER" ><TABLE SUMMARY="Header navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TH COLSPAN="3" ALIGN="center" >Manual do PHP</TH ></TR ><TR ><TD WIDTH="10%" ALIGN="left" VALIGN="bottom" ><A HREF="function.end.html" ACCESSKEY="P" >Anterior</A ></TD ><TD WIDTH="80%" ALIGN="center" VALIGN="bottom" ></TD ><TD WIDTH="10%" ALIGN="right" VALIGN="bottom" ><A HREF="function.in-array.html" ACCESSKEY="N" >Próxima</A ></TD ></TR ></TABLE ><HR ALIGN="LEFT" WIDTH="100%"></DIV ><H1 ><A NAME="function.extract" ></A >extract</H1 ><DIV CLASS="refnamediv" ><A NAME="AEN12519" ></A ><P > (PHP 3 >= 3.0.7, PHP 4, PHP 5)</P >extract -- Importa variáveis para a tabela de símbolos a partir de um array </DIV ><DIV CLASS="refsect1" ><A NAME="AEN12522" ></A ><H2 >Descrição</H2 >int <B CLASS="methodname" >extract</B > ( array var_array [, int extract_type [, string prefix]] )<BR ></BR ><P > Essa função é usada para importar variáveis a partir de um array para a tabela de símbolos corrente. Recebe o array associativo <CODE CLASS="parameter" >var_array</CODE > 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 <CODE CLASS="parameter" >extract_type</CODE > e <CODE CLASS="parameter" >prefix</CODE >. </P ><DIV CLASS="note" ><BLOCKQUOTE CLASS="note" ><P ><B >Nota: </B > Iniciado com a versão 4.0.5, esta função devolve o número de variáveis extraídas. </P ></BLOCKQUOTE ></DIV ><DIV CLASS="note" ><BLOCKQUOTE CLASS="note" ><P ><B >Nota: </B > <TT CLASS="constant" ><B >EXTR_IF_EXISTS</B ></TT > e <TT CLASS="constant" ><B >EXTR_PREFIX_IF_EXISTS</B ></TT > foi introduzido na versão 4.2.0. </P ></BLOCKQUOTE ></DIV ><DIV CLASS="note" ><BLOCKQUOTE CLASS="note" ><P ><B >Nota: </B > <TT CLASS="constant" ><B >EXTR_REFS</B ></TT > foi introduzido na versão 4.3.0. </P ></BLOCKQUOTE ></DIV ><P > <B CLASS="function" >extract()</B > checa se cada chave do array constitui um 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 <CODE CLASS="parameter" >extract_type</CODE >. Esse argumento pode receber os seguintes valores: <P ></P ><DIV CLASS="variablelist" ><DL ><DT ><TT CLASS="constant" ><B >EXTR_OVERWRITE</B ></TT ></DT ><DD ><P > Se houver uma colisão, sobrescreve a variável existente. </P ></DD ><DT ><TT CLASS="constant" ><B >EXTR_SKIP</B ></TT ></DT ><DD ><P > Se houver uma colisão, não sobrescreve a variável existente. </P ></DD ><DT ><TT CLASS="constant" ><B >EXTR_PREFIX_SAME</B ></TT ></DT ><DD ><P >Se houver uma colisão, adiciona um prefixo ao nome da variável definido pelo argumento <CODE CLASS="parameter" >prefix</CODE >. </P ></DD ><DT ><TT CLASS="constant" ><B >EXTR_PREFIX_ALL</B ></TT ></DT ><DD ><P > Adiciona um prefixo ao nome de todas as variáveis definido por <CODE CLASS="parameter" >prefix</CODE >. Desde o PHP 4.0.5 estão incluídos nomes numéricos. </P ></DD ><DT ><TT CLASS="constant" ><B >EXTR_PREFIX_INVALID</B ></TT ></DT ><DD ><P > Adiciona um prefixo definido por <CODE CLASS="parameter" >prefix</CODE > apenas para variáveis como nomes inválidos ou numéricos. Essa opção foi adicionada no PHP 4.0.5. </P ></DD ><DT ><TT CLASS="constant" ><B >EXTR_IF_EXISTS</B ></TT ></DT ><DD ><P > 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. </P ></DD ><DT ><TT CLASS="constant" ><B >EXTR_PREFIX_IF_EXISTS</B ></TT ></DT ><DD ><P > 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. </P ></DD ><DT ><TT CLASS="constant" ><B >EXTR_REFS</B ></TT ></DT ><DD ><P > Extrai variáveis como referências, ou seja, os valores das variáveis importadas ainda estarão referenciando os valores do parâmetro <CODE CLASS="parameter" >var_array</CODE >. Essa opção pode ser usada sozinha ou em conjunto com as outras usando o operador 'ou' em <CODE CLASS="parameter" >extract_type</CODE >. Essa opação foi adicionada no PHP 4.3.0. </P ></DD ></DL ></DIV > </P ><P > Se <CODE CLASS="parameter" >extract_type</CODE > não for especificado, é assumido o valor <TT CLASS="constant" ><B >EXTR_OVERWRITE</B ></TT >por padrão. </P ><P > Note que <CODE CLASS="parameter" >prefix</CODE > só é necessário se <CODE CLASS="parameter" >extract_type</CODE > for <TT CLASS="constant" ><B >EXTR_PREFIX_SAME</B ></TT >, <TT CLASS="constant" ><B >EXTR_PREFIX_ALL</B ></TT >, ou <TT CLASS="constant" ><B >EXTR_PREFIX_INVALID</B ></TT > ou <TT CLASS="constant" ><B >EXTR_PREFIX_IF_EXISTS</B ></TT >. 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. </P ><P > <B CLASS="function" >extract()</B > retorna o número de variáveis importadas com sucesso para a tabela de símbolos. </P ><P > Uma possível utilização de <B CLASS="function" >extract()</B > é na importação de variáveis contidas num array associativo retornado pela função <A HREF="function.wddx-deserialize.html" ><B CLASS="function" >wddx_deserialize()</B ></A >. </P ><P > <TABLE WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" CLASS="EXAMPLE" ><TR ><TD ><DIV CLASS="example" ><A NAME="AEN12614" ></A ><P ><B >Exemplo 1. Exemplo de <B CLASS="function" >extract()</B ></B ></P ><TABLE BORDER="0" BGCOLOR="#E0E0E0" CELLPADDING="5" ><TR ><TD ><code><font color="#000000"> <font color="#0000BB"><?php<br /><br /></font><font color="#FF8000">/* Suponha que $var_array é um array retornado pela função<br /> wddx_deserialize */<br /><br /></font><font color="#0000BB">$tamanho </font><font color="#007700">= </font><font color="#DD0000">"grande"</font><font color="#007700">;<br /></font><font color="#0000BB">$var_array </font><font color="#007700">= array (</font><font color="#DD0000">"cor" </font><font color="#007700">=> </font><font color="#DD0000">"azul"</font><font color="#007700">,<br /> </font><font color="#DD0000">"tamanho" </font><font color="#007700">=> </font><font color="#DD0000">"medio"</font><font color="#007700">,<br /> </font><font color="#DD0000">"forma" </font><font color="#007700">=> </font><font color="#DD0000">"esfera"</font><font color="#007700">);<br /></font><font color="#0000BB">extract </font><font color="#007700">(</font><font color="#0000BB">$var_array</font><font color="#007700">, </font><font color="#0000BB">EXTR_PREFIX_SAME</font><font color="#007700">, </font><font color="#DD0000">"wddx"</font><font color="#007700">);<br /><br />print </font><font color="#DD0000">"$cor, $tamanho, $forma, $wddx_tamanho</font><font color="#007700">\n</font><font color="#DD0000">"</font><font color="#007700">;<br /><br /></font><font color="#0000BB">?></font> </font> </code></TD ></TR ></TABLE ><P > O exemplo acima produziria: </P ><TABLE BORDER="0" BGCOLOR="#E0E0E0" CELLPADDING="5" ><TR ><TD ><PRE CLASS="screen" >azul, grande, esfera, medio</PRE ></TD ></TR ></TABLE ></DIV ></TD ></TR ></TABLE > </P ><P > O <CODE CLASS="varname" >$tamanho</CODE > não foi sobrescrito, porque nós especificamos <TT CLASS="constant" ><B >EXTR_PREFIX_SAME</B ></TT >, o que resultou na criação da variável <CODE CLASS="varname" >$wddx_tamanho</CODE >. Se <TT CLASS="constant" ><B >EXTR_SKIP</B ></TT > fosse utilizado, então $wddx_tamanho não seria criada. <TT CLASS="constant" ><B >EXTR_OVERWRITE</B ></TT > teria feito com que <CODE CLASS="varname" >$tamanho</CODE > tivesse o valor "medio", e <TT CLASS="constant" ><B >EXTR_PREFIX_ALL</B ></TT > resultaria em novas variáveis com os nomes <CODE CLASS="varname" >$wddx_cor</CODE >, <CODE CLASS="varname" >$wddx_tamanho</CODE >, e <CODE CLASS="varname" >$wddx_forma</CODE >. </P ><P > Você deve usar um array associativo, um array indexado numericamente não produzirá resultados a menos que você use <TT CLASS="constant" ><B >EXTR_PREFIX_ALL</B ></TT > ou <TT CLASS="constant" ><B >EXTR_PREFIX_INVALID</B ></TT >. </P ><P > Veja também <A HREF="function.compact.html" ><B CLASS="function" >compact()</B ></A >. </P ></DIV ><DIV CLASS="NAVFOOTER" ><HR ALIGN="LEFT" WIDTH="100%"><TABLE SUMMARY="Footer navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" ><A HREF="function.end.html" ACCESSKEY="P" >Anterior</A ></TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" ><A HREF="index.html" ACCESSKEY="H" >Principal</A ></TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" ><A HREF="function.in-array.html" ACCESSKEY="N" >Próxima</A ></TD ></TR ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" >end</TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" ><A HREF="ref.array.html" ACCESSKEY="U" >Acima</A ></TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" >in_array</TD ></TR ></TABLE ></DIV ></BODY ></HTML >