Sophie

Sophie

distrib > Mandriva > 2008.1 > i586 > by-pkgid > 703d980c580707c382b4e43e25965bc5 > files > 11838

php-manual-pt_BR-5.2.4-1mdv2008.1.noarch.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<HTML
><HEAD
><TITLE
>Manipulação de tipos</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="Tipos"
HREF="language.types.html"><LINK
REL="PREVIOUS"
TITLE="Pseudo-tipos utilizados nesta documentação"
HREF="language.pseudo-types.html"><LINK
REL="NEXT"
TITLE="Variáveis"
HREF="language.variables.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.pseudo-types.html"
ACCESSKEY="P"
>Anterior</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
>Capítulo 11. Tipos</TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="language.variables.html"
ACCESSKEY="N"
>Próxima</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="sect1"
><H1
CLASS="sect1"
><A
NAME="language.types.type-juggling"
>Manipulação de tipos</A
></H1
><P
>&#13;    O PHP não requer (ou suporta) a definição de tipo explicita na
    declaração de variáveis: o tipo de uma variável é determinado pelo
    contexto em que a variável é utilizada. Isto significa que, se você
    assimila um valor string para a variável <CODE
CLASS="parameter"
>$var</CODE
>,
    <CODE
CLASS="parameter"
>$var</CODE
> se torna uma string. Se você então assimila um
    valor inteiro para <CODE
CLASS="parameter"
>$var</CODE
>, ela se torna
    um inteiro.
   </P
><P
>&#13;    Um exemplo da conversão automática do PHP é o operador de
    adição '+'. Se qualquer um dos operadores for float, então todos
    os operadores são avaliados como floats, e o resultado será um
    float. De outra forma, se os operadores forem interpretados como inteiros
    então o resultado será um inteiro. Note que isso NÃO
    muda os tipos dos operadores: apenas muda em como
    esses operadores são avaliados.
    <DIV
CLASS="informalexample"
><P
></P
><A
NAME="AEN3535"
></A
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
CELLPADDING="5"
><TR
><TD
><code><font color="#000000">
<font color="#0000BB">&lt;?php<br />$foo </font><font color="#007700">= </font><font color="#DD0000">"0"</font><font color="#007700">;&nbsp;&nbsp;</font><font color="#FF8000">// $foo eh string (ASCII 48)<br /></font><font color="#0000BB">$foo </font><font color="#007700">+= </font><font color="#0000BB">2</font><font color="#007700">;&nbsp;&nbsp;&nbsp;</font><font color="#FF8000">// $foo eh agora um interio (2)<br /></font><font color="#0000BB">$foo </font><font color="#007700">= </font><font color="#0000BB">$foo </font><font color="#007700">+ </font><font color="#0000BB">1.3</font><font color="#007700">;&nbsp;&nbsp;</font><font color="#FF8000">// $foo eh agora um float (3.3)<br /></font><font color="#0000BB">$foo </font><font color="#007700">= </font><font color="#0000BB">5 </font><font color="#007700">+ </font><font color="#DD0000">"10 pequenos porcos"</font><font color="#007700">;&nbsp;&nbsp;&nbsp;</font><font color="#FF8000">// $foo eh inteiro (15)<br /></font><font color="#0000BB">$foo </font><font color="#007700">= </font><font color="#0000BB">5 </font><font color="#007700">+ </font><font color="#DD0000">"10 minúsculos porcos"</font><font color="#007700">; </font><font color="#FF8000">// $foo eh inteiro (15)<br /></font><font color="#0000BB">?&gt;</font>
</font>
</code></TD
></TR
></TABLE
><P
></P
></DIV
>
   </P
><P
>&#13;    Se os últimos dois exemplos lhe parecerem estranhos, veja <A
HREF="language.types.string.html#language.types.string.conversion"
>Conversão de
    strings para números</A
>.
   </P
><P
>&#13;    Se você deseja forçar uma variável para ser avaliada como um certo tipo,
    veja a seção <A
HREF="language.types.type-juggling.html#language.types.typecasting"
>Moldando o
    tipo (casting)</A
>. Se você deseja mudar o tipo de uma variável, veja
    <A
HREF="function.settype.html"
><B
CLASS="function"
>settype()</B
></A
>.
   </P
><P
>&#13;    Se quiser testar qualquer um dos exemplo desta seção, você pode
    usar a função <A
HREF="function.var-dump.html"
><B
CLASS="function"
>var_dump()</B
></A
>.
   </P
><DIV
CLASS="note"
><BLOCKQUOTE
CLASS="note"
><P
><B
>Nota: </B
>
     O comportamento de uma conversão automática para array é atualmente
     indefinida.
    </P
><P
>&#13;     <DIV
CLASS="informalexample"
><P
></P
><A
NAME="AEN3547"
></A
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
CELLPADDING="5"
><TR
><TD
><code><font color="#000000">
<font color="#0000BB">&lt;?php<br />$a </font><font color="#007700">= </font><font color="#DD0000">"1"</font><font color="#007700">;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#FF8000">// $a é uma string<br /></font><font color="#0000BB">$a</font><font color="#007700">[</font><font color="#0000BB">0</font><font color="#007700">] = </font><font color="#DD0000">"f"</font><font color="#007700">;&nbsp;&nbsp;</font><font color="#FF8000">// E com relação aos índices da string? O que acontece?<br /></font><font color="#0000BB">?&gt;</font>
</font>
</code></TD
></TR
></TABLE
><P
></P
></DIV
>
    </P
><P
>&#13;     Desde que o PHP (por razões históricas) suporta indexação de strings 
     através de offsets utilizando a mesma sintaxe da indexação de arrays, o exemplo 
     acima nos deixa um problema: $a se tornou um array sendo o primeiro 
     elemento "f", ou será que "f" se tornou o primeiro caracter 
     da string $a ?
    </P
><P
>&#13;     As versões atuais do PHP interpretam a segunda assimilacao como
     identificação de deslocamento na string, então $a se torna "f", o resultado
     desta conversão automática entretanto pode ser considerada
     indefinida. O PHP 4 introduziu a nova sintaxe de chaves para acessar
     caracteres na string. Utilize esta sintaxe em vez do exemplo apresentado
     acima:
     <DIV
CLASS="informalexample"
><P
></P
><A
NAME="AEN3551"
></A
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
CELLPADDING="5"
><TR
><TD
><code><font color="#000000">
<font color="#0000BB">&lt;?php<br />$a&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#007700">= </font><font color="#DD0000">"abc"</font><font color="#007700">; </font><font color="#FF8000">// $a eh uma string<br /></font><font color="#0000BB">$a</font><font color="#007700">{</font><font color="#0000BB">1</font><font color="#007700">} = </font><font color="#DD0000">"f"</font><font color="#007700">;&nbsp;&nbsp;&nbsp;</font><font color="#FF8000">// $a eh agora "afc"<br /></font><font color="#0000BB">?&gt;</font>
</font>
</code></TD
></TR
></TABLE
><P
></P
></DIV
>
     Veja a seção entitulada <A
HREF="language.types.string.html#language.types.string.substr"
>Acessando
     caracteres da string</A
> para mais informações.
    </P
></BLOCKQUOTE
></DIV
><DIV
CLASS="sect2"
><H2
CLASS="sect2"
><A
NAME="language.types.typecasting"
>Moldando Tipos - Type Casting</A
></H2
><P
>&#13;     A moldagem de tipos no PHP funciona como no C: o nome de um
     tipo desejado é escrito entre parênteses antes da variável em
     que se deseja a moldagem.
     <DIV
CLASS="informalexample"
><P
></P
><A
NAME="AEN3557"
></A
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
CELLPADDING="5"
><TR
><TD
><code><font color="#000000">
<font color="#0000BB">&lt;?php<br />$foo </font><font color="#007700">= </font><font color="#0000BB">10</font><font color="#007700">;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#FF8000">// $foo eh um inteiro<br /></font><font color="#0000BB">$bar </font><font color="#007700">= (boolean) </font><font color="#0000BB">$foo</font><font color="#007700">; </font><font color="#FF8000">// $bar eh um booleano<br /></font><font color="#0000BB">?&gt;</font>
</font>
</code></TD
></TR
></TABLE
><P
></P
></DIV
>
    </P
><P
>&#13;     As moldagens permitidas são:
     <P
></P
><UL
><LI
><P
>(int), (integer) - molde para inteiro</P
></LI
><LI
><P
>(bool), (boolean) - molde para booleano</P
></LI
><LI
><P
>(float), (double), (real) - molde para número de ponto flutuante</P
></LI
><LI
><P
>(string) - molde para string</P
></LI
><LI
><P
>(array) - molde para array</P
></LI
><LI
><P
>(object) - molde para objeto</P
></LI
></UL
>
    </P
><P
>&#13;     Note que tabulações e espaços são permitidos dentro dos parênteses, então
     o seguinte são funcionalmente equivalentes:
     <DIV
CLASS="informalexample"
><P
></P
><A
NAME="AEN3574"
></A
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
CELLPADDING="5"
><TR
><TD
><code><font color="#000000">
<font color="#0000BB">&lt;?php<br />$foo </font><font color="#007700">= (int) </font><font color="#0000BB">$bar</font><font color="#007700">;<br /></font><font color="#0000BB">$foo </font><font color="#007700">= ( int ) </font><font color="#0000BB">$bar</font><font color="#007700">;<br /></font><font color="#0000BB">?&gt;</font>
</font>
</code></TD
></TR
></TABLE
><P
></P
></DIV
>
    </P
><DIV
CLASS="note"
><BLOCKQUOTE
CLASS="note"
><P
><B
>Nota: </B
>
      Em vez de moldar uma variável para string, você também pode englobar
      a variável entre aspas duplas.
     <DIV
CLASS="informalexample"
><P
></P
><A
NAME="AEN3578"
></A
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
CELLPADDING="5"
><TR
><TD
><code><font color="#000000">
<font color="#0000BB">&lt;?php<br />$foo </font><font color="#007700">= </font><font color="#0000BB">10</font><font color="#007700">;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#FF8000">// $foo eh um interio<br /></font><font color="#0000BB">$str </font><font color="#007700">= </font><font color="#DD0000">"$foo"</font><font color="#007700">;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#FF8000">// $str eh uma string<br /></font><font color="#0000BB">$fst </font><font color="#007700">= (string) </font><font color="#0000BB">$foo</font><font color="#007700">; </font><font color="#FF8000">// $fst tambem eh uma string<br /><br />// Isto imprimirah "eles são o mesmo"<br /></font><font color="#007700">if (</font><font color="#0000BB">$fst </font><font color="#007700">=== </font><font color="#0000BB">$str</font><font color="#007700">) {<br />&nbsp;&nbsp;&nbsp;&nbsp;echo </font><font color="#DD0000">"eles são o mesmo"</font><font color="#007700">;<br />}<br /></font><font color="#0000BB">?&gt;</font>
</font>
</code></TD
></TR
></TABLE
><P
></P
></DIV
>
     </P
></BLOCKQUOTE
></DIV
><P
>&#13;     Pode não ser tão óbvio o que exatamente ocorre quando se molda
     entre certos tipos. Para mais informações, veja essas seções:

     <P
></P
><UL
><LI
><P
><A
HREF="language.types.boolean.html#language.types.boolean.casting"
>Convertendo para
        booleano</A
></P
></LI
><LI
><P
><A
HREF="language.types.integer.html#language.types.integer.casting"
>Convertendo para
        inteiro</A
></P
></LI
><LI
><P
><A
HREF="language.types.float.html#language.types.float.casting"
>Convertendo para
        float</A
></P
></LI
><LI
><P
><A
HREF="language.types.string.html#language.types.string.casting"
>Convertendo para
        string</A
></P
></LI
><LI
><P
><A
HREF="language.types.array.html#language.types.array.casting"
>Convertendo para
        array</A
></P
></LI
><LI
><P
><A
HREF="language.types.object.html#language.types.object.casting"
>Convertendo para
        object</A
></P
></LI
><LI
><P
><A
HREF="language.types.resource.html#language.types.resource.casting"
>Convertendo para
        resource</A
></P
></LI
><LI
><P
>&#13;        <A
HREF="types.comparisons.html"
>Tabela de comparação entre tipos</A
>
       </P
></LI
></UL
>
    </P
></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.pseudo-types.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.html"
ACCESSKEY="N"
>Próxima</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Pseudo-tipos utilizados nesta documentação</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="language.types.html"
ACCESSKEY="U"
>Acima</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Variáveis</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>