<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <HTML ><HEAD ><TITLE >Variáveis variáveis</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="Variáveis" HREF="language.variables.html"><LINK REL="PREVIOUS" TITLE="Escopo de variáveis" HREF="language.variables.scope.html"><LINK REL="NEXT" TITLE="Variáveis externas ao PHP" HREF="language.variables.external.html"><META HTTP-EQUIV="Content-type" CONTENT="text/html; charset=UTF-8"></HEAD ><BODY CLASS="sect1" 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="language.variables.scope.html" ACCESSKEY="P" >Anterior</A ></TD ><TD WIDTH="80%" ALIGN="center" VALIGN="bottom" >Capítulo 12. Variáveis</TD ><TD WIDTH="10%" ALIGN="right" VALIGN="bottom" ><A HREF="language.variables.external.html" ACCESSKEY="N" >Próxima</A ></TD ></TR ></TABLE ><HR ALIGN="LEFT" WIDTH="100%"></DIV ><DIV CLASS="sect1" ><H1 CLASS="sect1" ><A NAME="language.variables.variable" >Variáveis variáveis</A ></H1 ><P > As vezes é conveniente poder trabalhar com variáveis variáveis. Isto é, nomes de variáveis que pode ser criadas e utilizadas dinamicamente. Uma variável normal é criada numa instrução como: </P ><DIV CLASS="informalexample" ><P ></P ><A NAME="AEN3830" ></A ><TABLE BORDER="0" BGCOLOR="#E0E0E0" CELLPADDING="5" ><TR ><TD ><code><font color="#000000"> <font color="#0000BB"><?php<br />$a </font><font color="#007700">= </font><font color="#DD0000">"hello"</font><font color="#007700">;<br /></font><font color="#0000BB">?></font> </font> </code></TD ></TR ></TABLE ><P ></P ></DIV ><P > Uma variável variável pega o valor de uma variável e a trata como o nome de uma variável. No exemplo acima, <SPAN CLASS="emphasis" ><I CLASS="emphasis" >hello</I ></SPAN > pode ser utilizada como o nome de uma variável utilizando dois sinais de cifrão: </P ><DIV CLASS="informalexample" ><P ></P ><A NAME="AEN3834" ></A ><TABLE BORDER="0" BGCOLOR="#E0E0E0" CELLPADDING="5" ><TR ><TD ><code><font color="#000000"> <font color="#0000BB"><?php<br /></font><font color="#007700">$</font><font color="#0000BB">$a </font><font color="#007700">= </font><font color="#DD0000">"world"</font><font color="#007700">;<br /></font><font color="#0000BB">?></font> </font> </code></TD ></TR ></TABLE ><P ></P ></DIV ><P > Neste ponto, duas variáveis foram definidas e preservadas na árvore de símbolos do PHP: <CODE CLASS="varname" >$a</CODE > contendo "hello" e <CODE CLASS="varname" >$hello</CODE > contendo "world". Da mesma forma, esta instrução: </P ><DIV CLASS="informalexample" ><P ></P ><A NAME="AEN3839" ></A ><TABLE BORDER="0" BGCOLOR="#E0E0E0" CELLPADDING="5" ><TR ><TD ><code><font color="#000000"> <font color="#0000BB"><?php<br /></font><font color="#007700">echo </font><font color="#DD0000">"$a </font><font color="#007700">${</font><font color="#DD0000">$a</font><font color="#007700">}</font><font color="#DD0000">"</font><font color="#007700">;<br /></font><font color="#0000BB">?></font> </font> </code></TD ></TR ></TABLE ><P ></P ></DIV ><P > produz a mesma saida que: </P ><DIV CLASS="informalexample" ><P ></P ><A NAME="AEN3842" ></A ><TABLE BORDER="0" BGCOLOR="#E0E0E0" CELLPADDING="5" ><TR ><TD ><code><font color="#000000"> <font color="#0000BB"><?php<br /></font><font color="#007700">echo </font><font color="#DD0000">"$a $hello"</font><font color="#007700">;<br /></font><font color="#0000BB">?></font> </font> </code></TD ></TR ></TABLE ><P ></P ></DIV ><P > no caso: <SAMP CLASS="computeroutput" >hello world</SAMP >. </P ><P > Para poder utilizar variáveis variáveis com arrays, você precisa resolver um problema de ambigüidade. Assim, se você escrever <CODE CLASS="varname" >$$a[1]</CODE > então o interpretador pode entender que você quer usar <CODE CLASS="varname" >$a[1]</CODE > como uma variável ou que você quer usar <CODE CLASS="varname" >$$a</CODE > como uma variável e [1] como o índice dessa variável. A sintaxe para resolver essa ambigüidade é <CODE CLASS="varname" >${$a[1]}</CODE > para o primeiro caso e <CODE CLASS="varname" >${$a}[1]</CODE > para o segundo. </P ><DIV CLASS="warning" ><P ></P ><TABLE CLASS="warning" BORDER="1" WIDTH="100%" ><TR ><TD ALIGN="CENTER" ><B >Atenção</B ></TD ></TR ><TR ><TD ALIGN="LEFT" ><P > Verifique que variáveis variáveis não podem ser utilizadas com os novos <A HREF="language.variables.predefined.html#language.variables.superglobals" >arrays superglobais</A >. Isto significa que você não pode fazer coisas como <CODE CLASS="varname" >${$_GET}</CODE >. Se você está procurando uma maneira de manipular as superglobais como as antigas <CODE CLASS="varname" >HTTP_*_VARS</CODE >, você deve tentar <A HREF="language.references.html" >referenciá-las</A >. </P ></TD ></TR ></TABLE ></DIV ></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="language.variables.scope.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="language.variables.external.html" ACCESSKEY="N" >Próxima</A ></TD ></TR ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" >Escopo de variáveis</TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" ><A HREF="language.variables.html" ACCESSKEY="U" >Acima</A ></TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" >Variáveis externas ao PHP</TD ></TR ></TABLE ></DIV ></BODY ></HTML >