Sophie

Sophie

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

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
>Expressões</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="Referência da Linguagem"
HREF="langref.html"><LINK
REL="PREVIOUS"
TITLE="Constantes Mágicas"
HREF="language.constants.predefined.html"><LINK
REL="NEXT"
TITLE="Operadores"
HREF="language.operators.html"><META
HTTP-EQUIV="Content-type"
CONTENT="text/html; charset=UTF-8"></HEAD
><BODY
CLASS="chapter"
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.constants.predefined.html"
ACCESSKEY="P"
>Anterior</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
></TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="language.operators.html"
ACCESSKEY="N"
>Próxima</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="chapter"
><H1
><A
NAME="language.expressions"
>Capítulo 14. Expressões</A
></H1
><P
>&#13;    Expressões são as peças de construção mais importantes do PHP. No PHP,
    quase tudo o que você escreve são expressões. A maneira mais simples e ainda
    mais precisa de definir uma expressão é "tudo o que tem um
    valor".
   </P
><P
>&#13;    As formas mais básicas de expressões são constantes e variáveis. Quando você
    digita "$a = 5", você está atribuindo '5' para $a. '5', obviamente, tem o valor
    5, ou, em outras palavras, '5' é uma expressão com o valor 5 (neste caso, '5'
    é uma constante inteira).
   </P
><P
>&#13;    Depois desta atribuição, você pode esperar que o valor de $a seja 5
    também, assim se você escrever $b = $a, você pode esperar que $b se comporte
    da mesma forma que se você escrevesse $b = 5. Em outras palavras, $a é uma expressão com
    valor 5 também. Se tudo funcionou bem, isto é
    exatamente o que acontecerá.
   </P
><P
>&#13;    Exemplos ligeiramente mais complexos para expressões são as funções. Por exemplo,
    considere a seguinte função:
    <DIV
CLASS="informalexample"
><P
></P
><A
NAME="AEN4054"
></A
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
CELLPADDING="5"
><TR
><TD
><code><font color="#000000">
<font color="#0000BB">&lt;?php<br /></font><font color="#007700">function </font><font color="#0000BB">foo </font><font color="#007700">()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;return </font><font color="#0000BB">5</font><font color="#007700">;<br />}<br /></font><font color="#0000BB">?&gt;</font>
</font>
</code></TD
></TR
></TABLE
><P
></P
></DIV
>
   </P
><P
>&#13;    Assumindo que você está familiarizado com o conceito de funções (se não estiver,
    dê uma olhada no capítulo sobre <A
HREF="language.functions.html"
>functions</A
>), você pode assumir que digitar
    <TT
CLASS="literal"
>$c = foo()</TT
> é essencialmente a mesma coisa que escrever
    <TT
CLASS="literal"
>$c = 5</TT
>, e você está certo. Funções são expressões com o valor
    igual ao seu valor de retorno. Como foo() retorna 5, o valor da expressão
    'foo()' é 5. Geralmente, as funções não retornam apenas um valor estático, mas
    computam algo.
   </P
><P
>&#13;    Claro, valores em PHP não tem que ser inteiros, e muito comumente
    eles não são. o PHP suporta quatro tipos de valores escalares: valores <A
HREF="language.types.integer.html"
><B
CLASS="type"
>integer</B
></A
>
    (inteiros), valores de ponto flutuante (<A
HREF="language.types.float.html"
><B
CLASS="type"
>float</B
></A
>), valores <A
HREF="language.types.string.html"
><B
CLASS="type"
>string</B
></A
>
    (caracteres) e valores <A
HREF="language.types.boolean.html"
><B
CLASS="type"
>boolean</B
></A
> (booleano) (valores escalares são valores que
    você não pode partir em peças menores, diferentemente de matrizes, por exemplo). O PHP também
    suporta dois tipos compostos (não escalar): matrizes e objetos. Cada um desses
    valores podem ser definidos em uma variável ou retornados de uma função.
   </P
><P
>&#13;    O PHP leva as expressões muito além, da mesma maneira que muitas outras linguagens
    fazem. O PHP é uma linguagem orientada a expressões, no
    sentido de que quase tudo são expressões. Considere o
    exemplo com o qual já lidamos, '$a = 5'. É fácil ver que
    há dois valores envolvidos aqui, o valor da constante inteira
    '5', e o valor de $a que está sendo atualizado para 5
    também. Mas a verdade é que há um valor adicional envolvido
    aqui, e que é o próprio valor da atribuição. A
    própria atribuição é avaliada com o valor atribuído, neste caso 5.
    Na prática, significa que '$a = 5', independente do que faça,
    é uma expressão com o valor 5. Portanto, escrever algo como
    '$b = ($a = 5)' é como escrever '$a = 5; $b = 5;' (um ponto-e-vírgula
    marca o fim do comando). Como atribuições são analisadas
    da direita para a esquerda, você também pode escrever '$b = $a = 5'.
   </P
><P
>&#13;    Outro bom exemplo de orientação de expressão é o pré e
    o pós-incremento e decremento. Usuários de PHP 2 e muitas outras
    linguagens podem estar familiarizados com a notação de variável++ e
    variable--. Este são <A
HREF="language.operators.increment.html"
>&#13;    operadores de incremento e decrimento</A
>. No
    PHP/FI 2, o comando '$a++' não tem valor (não é uma
    expressão), e portanto você não pode atribuir desta forma ou usá-la de jeito nenhum.
    O PHP evoluiu a capacidade de incremento/decremento criando
    estas expressões também, como em C. Em PHP, como em C, há
    dois tipos de incremento - pré-incremento e pós-incremento.
    Tanto o pré-incremento quanto o pós-incremento, essencialmente, incrementam
    as variáveis, e o efeito sobre a variável é idêntico. A
    diferença é com o valor da expressão de incremento.
    O pré-incremento, que é escrito '++$variavel', é avaliado
    como o valor de incremento (o PHP incrementa a variável antes
    de ler seu valor, por isso o nome pré-incremento). O pós-incremento, que é
    escrito '$variavel++' é avaliado como o valor original da
    variável, antes de ser incrementada (o PHP incrementa a variável
    depois de ler seu valor, por isso o nome 'pós-incremento').
   </P
><P
>&#13;    Um tipo muito comum de expressões são expressões de <A
HREF="language.operators.comparison.html"
>comparação</A
>.
    Estas expressões avaliam para ser <TT
CLASS="constant"
><B
>FALSE</B
></TT
> ou <TT
CLASS="constant"
><B
>TRUE</B
></TT
>. O PHP
    suporta &#62; (maior que), &#62;= (maior ou igual a), == (igual),
    != (diferente), &#60; (menor que) and &#60;= (menor ou igual a).
    A linguagem também suporta um conjunto de operador de equivalencia estrita: ===
    (igual a e do mesmo tipo) and !== (diferente de ou não do mesmo tipo).
    Estas expressões são mais comumente usada dentro de execução condicional
    como comandos <TT
CLASS="literal"
>if</TT
>.
   </P
><P
>&#13;    O último exemplo de expressões com que nós vamos lidar aqui são as expressões combinadas
    operador-atribuição. Você já sabe que se você
    quer incrementar $a de 1, você só precisa escrever '$a++' ou '++$a'.
    Mas e se você quiser somar mais que um a ele, por exemplo 3?
    Você poderia escrever '$a++' várias vezes, mas esta obviamente não é
    uma forma muito eficiente ou confortável. Uma prática muito mais comum
    é escrever '$a = $a + 3'. '$a + 3' é avaliada como o valor de $a
    mais 3, e é atribuído de volta a $a, que resulta em
    incrementar $a de 3. Em PHP, como em várias outras linguagens
    como o C, você pode escrever isto de uma forma mais curta, que com o tempo se
    torna mais limpa e rápida de se entender também. Somar 3 ao
    valor corrente de $a pode ser escrito '$a +=3'. Isto significa exatamente
    "pegue o valor de $a, some 3 a ele, e atribua-o de volta a $a."
    Além de ser mais curto e mais limpo, isto também resulta em
    execução mais rápida. O valor de '$a += 3', como o valor de uma
    atribuição regular, é o valor atribuído. Note que NÃO
    é 3, mas o valor combinado de $a mais 3 (este é o valor que
    é atribuído a $a). Qualquer operador de dois parâmetros pode ser usado
    neste modo operador-atribuição, por exemplo '$a -= 5' (subtrai 5 do
    valor de $a), '$ b *= 7' (multiplica o valor de $b por 7), etc.
   </P
><P
>&#13;    Há mais uma expressão que podem parecer estranha se você não a viu em outras linguagens,
    o operador condicional ternário:
   </P
><P
>&#13;    <DIV
CLASS="informalexample"
><P
></P
><A
NAME="AEN4076"
></A
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
CELLPADDING="5"
><TR
><TD
><code><font color="#000000">
<font color="#0000BB">&lt;?php<br />$primeira </font><font color="#007700">? </font><font color="#0000BB">$segunda </font><font color="#007700">: </font><font color="#0000BB">$terceira<br />?&gt;</font>
</font>
</code></TD
></TR
></TABLE
><P
></P
></DIV
>
   </P
><P
>&#13;    Se o valor da primeira sub-expressão é verdadeiro (<TT
CLASS="constant"
><B
>TRUE</B
></TT
>, não-zero), então
    a segunda sub-expressão é avaliada, e este é o resultado da
    expressão condicional. Caso contrário, a terceira sub-expressão é
    avaliada e este é o valor.
   </P
><P
>&#13;    O seguinte exemplo deve ajudá-lo a entender um pouco melhor pré e
    pós-incremento e expressões em geral:
   </P
><P
>&#13;    <DIV
CLASS="informalexample"
><P
></P
><A
NAME="AEN4082"
></A
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
CELLPADDING="5"
><TR
><TD
><code><font color="#000000">
<font color="#0000BB">&lt;?php<br /></font><font color="#007700">function </font><font color="#0000BB">double</font><font color="#007700">(</font><font color="#0000BB">$i</font><font color="#007700">)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;return </font><font color="#0000BB">$i</font><font color="#007700">*</font><font color="#0000BB">2</font><font color="#007700">;<br />}<br /></font><font color="#0000BB">$b </font><font color="#007700">= </font><font color="#0000BB">$a </font><font color="#007700">= </font><font color="#0000BB">5</font><font color="#007700">;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#FF8000">/* atribui o valor cinco às variáveis $a e $b */<br /></font><font color="#0000BB">$c </font><font color="#007700">= </font><font color="#0000BB">$a</font><font color="#007700">++;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#FF8000">/* pós-incremento, atribui o valor original de $a<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(5) para $c */<br /></font><font color="#0000BB">$e </font><font color="#007700">= </font><font color="#0000BB">$d </font><font color="#007700">= ++</font><font color="#0000BB">$b</font><font color="#007700">;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#FF8000">/* pré-incremento, atribui o valor incrementado de<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$b (6) a $d e $e */<br /><br />/* neste ponto, tanto $d quanto $e são iguais a 6 */<br /><br /></font><font color="#0000BB">$f </font><font color="#007700">= </font><font color="#0000BB">double</font><font color="#007700">(</font><font color="#0000BB">$d</font><font color="#007700">++);&nbsp;&nbsp;</font><font color="#FF8000">/* atribui o dobro do valor de $d antes<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;do incremento, 2*6 = 12 a $f */<br /></font><font color="#0000BB">$g </font><font color="#007700">= </font><font color="#0000BB">double</font><font color="#007700">(++</font><font color="#0000BB">$e</font><font color="#007700">);&nbsp;&nbsp;</font><font color="#FF8000">/* atribui o dobro do valor de $e depois<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;do incremento, 2*7 = 14 a $g */<br /></font><font color="#0000BB">$h </font><font color="#007700">= </font><font color="#0000BB">$g </font><font color="#007700">+= </font><font color="#0000BB">10</font><font color="#007700">;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#FF8000">/* primeiro, $g é incrementado de 10 e termina com o<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;valor 24. o valor da atribuição (24) é<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;então atribuído a $h, e $h termina com o valor<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;24 também. */<br /></font><font color="#0000BB">?&gt;</font>
</font>
</code></TD
></TR
></TABLE
><P
></P
></DIV
>
   </P
><P
>&#13;    Algumas expressões podem ser consideradas instruções. Neste
    caso, uma instrução na forma 'expr' ';' ou seja, uma
    expressão seguida de um ponto e vírgula. Em '$b=$a=5;', $a=5 é uma
    expressão válida, mas não é um comando por si só. '$b=$a=5;'
    porém é um comando válido.
   </P
><P
>&#13;    Uma última coisa que vale mencionar é o valor-verdade de expressões.
    Em muitos eventos, principalmente em instruções condicionais e loops, você não
    está interessado no valor específico da expressão, mas somente se ela
    significa <TT
CLASS="constant"
><B
>TRUE</B
></TT
> ou <TT
CLASS="constant"
><B
>FALSE</B
></TT
> (o PHP não tem um tipo booleano dedicado).

    

    As constantes <TT
CLASS="constant"
><B
>TRUE</B
></TT
> e <TT
CLASS="constant"
><B
>FALSE</B
></TT
> (insensitivas ao caso) são seus dois
    valores booleanos possíveis. As vezes uma expressão é
    automaticamente convertida para um booleano. Veja a
    <A
HREF="language.types.type-juggling.html#language.types.typecasting"
>seção sobre
    type-casting</A
> para detalhes de como isso é feito.
   </P
><P
>&#13;    O PHP fornece uma implementação completa e poderosa de expressões, e a completa
    documentação dela vai além do escopo deste manual. Os exemplos acima devem dar a
    você uma boa idéia sobre o que são as expressões e como você pode construir
    expressões úteis. Através do restante do manual nós escreveremos
    <CODE
CLASS="varname"
>expr</CODE
> ou <CODE
CLASS="varname"
>expressao</CODE
>
    para indicar qualquer expressão PHP válida.
   </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="language.constants.predefined.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.operators.html"
ACCESSKEY="N"
>Próxima</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Constantes Mágicas</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="langref.html"
ACCESSKEY="U"
>Acima</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Operadores</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>