<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">

 <title>Aprender PHP</title>
 <link type="application/atom+xml" rel="self" href="http://maurogeorge.github.com/atom.xml"/>
 <link href="http://maurogeorge.github.com/"/>
 <updated>2014-01-05T04:46:02-08:00</updated>
 <id>http://aprenderphp.com.br/</id>
 <author>
   <name>Mauro George</name>
   <email>maurogot@gmail.com</email>
 </author>

 
 <entry>
   <id>http://aprenderphp.com.br/artigo/o-loop-for-as-estruturas-de-controle-aninhadas-o-break-e-o-continue-no-php</id>
   <title>O loop for, as  estruturas de controle aninhadas, o break e o continue no PHP</title>
   <link type="text/html" href="http://aprenderphp.com.br/artigo/o-loop-for-as-estruturas-de-controle-aninhadas-o-break-e-o-continue-no-php"/>
   <updated>2010-08-16T00:00:00-07:00</updated>
   <content type="html">&lt;h2&gt;Introdução&lt;/h2&gt;


&lt;p&gt;No artigo anterior  aprendemos como utilizar os &lt;a href=&quot;/artigo/lacos-de-repeticao-while-e-do-while-no-php&quot;&gt;laços de repetição while e do while  no PHP&lt;/a&gt; para realizarmos rotinas  que deviam ser executadas um certo numero de vezes. Porém existe uma  possibilidade de facilitar o uso de contadores finitos, sem utilizarmos o uso  do &lt;code&gt;while&lt;/code&gt; e do &lt;code&gt;do while&lt;/code&gt;. E está possibilidade é o que veremos agora com a  estrutura de controle &lt;code&gt;for&lt;/code&gt;.&lt;/p&gt;


&lt;h2&gt;Problema&lt;/h2&gt;


&lt;p&gt;Vamos continuar com  o mesmo problema do &lt;a href=&quot;/artigo/lacos-de-repeticao-while-e-do-while-no-php&quot;&gt;artigo anterior sobre while e do while&lt;/a&gt; para quem não se lembra do problema: Bart  Simpson ficou novamente na detenção no final da aula. E como punição terá que  escrever: “Estou aprendendo loopings no Aprender PHP” 100 vezes no quadro, ou  no nosso caso na tela.&lt;/p&gt;


&lt;p&gt;Sabemos que com o &lt;code&gt;while&lt;/code&gt; e o &lt;code&gt;do while&lt;/code&gt; podemos  resolver este problema facilmente, no entanto agora vamos ver uma abordagem  diferente com o uso do looping &lt;code&gt;for&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;O looping for no PHP&lt;/h2&gt;


&lt;p&gt;Assim como o &lt;code&gt;while&lt;/code&gt;  e o &lt;code&gt;do-while&lt;/code&gt; o &lt;code&gt;for&lt;/code&gt; é uma estrutura de controle responsável pela realização de  loopings no PHP.&lt;/p&gt;


&lt;p&gt;O comando for  aceita 3 expressões na sua declaração sendo elas:&lt;/p&gt;


&lt;ol&gt;
    &lt;li&gt;Expressão  que é avaliada apenas &lt;strong&gt;uma vez&lt;/strong&gt; na  primeira iteração, volta, do looping. Geralmente a utilizamos para iniciar a  nossa variável de controle, contador, como por exemplo &lt;code&gt;$i = 1&lt;/code&gt;.&lt;/li&gt;
    &lt;li&gt;Expressão  que é avaliada &lt;strong&gt;no inicio&lt;/strong&gt; de cada  iteração do looping, e caso retorne falso, o looping for será encerrado. A  segunda expressão como você pode ver pode ser considerada a condicional do  nosso looping, assim como tínhamos no &lt;code&gt;while&lt;/code&gt; e no &lt;code&gt;do while&lt;/code&gt;. Um exemplo seria &lt;code&gt;$i  &amp;lt;= 100&lt;/code&gt;.&lt;/li&gt;
    &lt;li&gt;Expressão  que é avaliada &lt;strong&gt;no final&lt;/strong&gt; de cada  iteração do looping, normalmente utilizada para alterar o valor da variável de  controle. Como por exemplo utilizar o operador de incremento &lt;code&gt;$i++&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;


&lt;h3&gt;Diagrama de bloco&lt;/h3&gt;


&lt;p&gt;Observe como seria  a representação do problema de Bart Simpson utilizando o &lt;code&gt;for&lt;/code&gt;.&lt;/p&gt;


&lt;p class=&quot;center&quot;&gt;
    &lt;img src=&quot;/img/artigos/o-loop-for-as-estruturas-de-controle-aninhadas-o-break-e-o-continue-no-php/looping-for-no-php-representacao-em-diagrama-de-blocos.jpg&quot; alt=&quot;Looping for no php representação em diagrama de blocos&quot; /&gt;
&lt;/p&gt;


&lt;p&gt;Iniciamos  com o &lt;a href=&quot;/artigo/o-algoritmo-o-diagrama-de-blocos-e-o-php&quot;&gt;bloco de processamento de dados&lt;/a&gt; que já é conhecido nosso para criarmos a  mensagem que vai ser exibida e atribuímos o valor a variável &lt;code&gt;$mensagem&lt;/code&gt;. Em  seguida para representarmos o loop utilizamos o símbolo denominado &lt;strong&gt;Processamento predefinido ou Preparação&lt;/strong&gt; com os valores da expressão do for o inicio, meio e fim, que foram apresentados  a você no tópico anterior. Também utilizamos as setas para indicar o  processamento e as letras S e N em que S representa o caminho a ser seguido caso a condição seja verdadeira e N caso a condição seja falsa.&lt;/p&gt;


&lt;h3&gt;No PHP&lt;/h3&gt;


&lt;p&gt;Agora vejamos como seria a representação em PHP  da nossa estrutura de controle for para resolvermos o problema de Bart Simpson.&lt;/p&gt;


&lt;pre class=&quot;brush: php;&quot;&gt;
&amp;lt;?php
$mensagem = &#39;Estou aprendendo loopings no Aprender PHP&#39;;

for( $i = 1; $i &amp;lt;= 100; $i++ ){

  echo $i . &#39; - &#39; .$mensagem . &#39;&amp;lt;br /&amp;gt;&#39; . PHP_EOL ;

}

?&amp;gt;
&lt;/pre&gt;


&lt;p&gt;Como  você pode observar diferentemente do &lt;a href=&quot;/artigo/lacos-de-repeticao-while-e-do-while-no-php&quot;&gt;while e do do-while&lt;/a&gt; não necessitamos incrementar o contador dentro  do nosso looping pois isto já fica implícito na própria declaração do &lt;code&gt;for&lt;/code&gt;. E  detalhe que o separador de instruções, expressões, no &lt;code&gt;for&lt;/code&gt; é o ;(ponto e  virgula).&lt;/p&gt;


&lt;div class=&quot;dica&quot;&gt;
    &lt;p&gt;Em relação à estrutura de controle for:&lt;/p&gt;
    &lt;ul&gt;
        &lt;li&gt;Declara-se 3 expressões no inicio do for
            &lt;ul&gt;
                &lt;li&gt;Sendo a 1ª expressão avaliada apenas &lt;strong&gt;uma vez&lt;/strong&gt;. Normalmente utilizada para  criação da variável de controle.&lt;/li&gt;
                &lt;li&gt;2ª expressão é avaliada no inicio de cada  iteração, caso esta expressão retorne falso o looping é encerrado. Podendo ser  considerada a condicional do for.&lt;/li&gt;
                &lt;li&gt;3ª Expressão é avaliada no final de cada  iteração, normalmente utilizada para alterar o valor da variável de controle.&lt;/li&gt;
            &lt;/ul&gt;
        &lt;/li&gt;
        &lt;li&gt;Separa-se as expressões utilizando o ;(ponto e virgula).&lt;/li&gt;
        &lt;li&gt;O looping é executado enquanto a condição da 2ª  expressão for verdadeira (True)&lt;/li&gt;
        &lt;li&gt;Quando  a condição da 2ª expressão for avaliada como falsa (False) o processamento da  rotina é desviado para fora do looping&lt;/li&gt;
        &lt;li&gt;O bloco de código referente ao looping deve ser  delimitado por chaves {}&lt;/li&gt;
        &lt;li&gt;Endente o código referente ao bloco em 4 espaços  por questões de legibilidade, a como configurar o seu editor de texto para  transformar Tabs em espaços&lt;/li&gt;
        &lt;li&gt;Utilizamos um contador para o looping não ficar  um looping infinito, este declarado na 1ª expressão&lt;/li&gt;
    &lt;li&gt;Não se esqueça de alterar o valor do contador,  na 3ª expressão, para não cairmos em um looping infinito.&lt;/li&gt;
    &lt;/ul&gt;
&lt;/div&gt;


&lt;h2&gt;Estruturas de controle aninhadas&lt;/h2&gt;


&lt;p&gt;Antes de  continuarmos com as estruturas de controle &lt;code&gt;break&lt;/code&gt; e &lt;code&gt;continue&lt;/code&gt; devemos saber um  conceito importante as estruturas de controle aninhadas.&lt;/p&gt;


&lt;p&gt;Também conhecido como desvio condicional  encadeado, as estruturas de controle aninhadas são utilizadas em casos em que é  necessário estabelecer verificações de condições sucessivas, ou seja, condições  dentro de condições.  Este tipo de  estrutura pode possuir diversos níveis de condições aninhadas. Vamos a um  exemplo.&lt;/p&gt;


&lt;h3&gt;Problema&lt;/h3&gt;


&lt;p&gt;Como acabamos de  aprender o looping &lt;code&gt;for&lt;/code&gt; utilizaremos ele neste exemplo. Nosso problema é o seguinte:&lt;/p&gt;


&lt;ul&gt;
    &lt;li&gt;criar  um programa que escreve de 1 a 100&lt;/li&gt;
    &lt;li&gt;imprimir  todos os números&lt;/li&gt;
    &lt;li&gt;ao lado  de todos os número mostrar se o número é par ou impar&lt;/li&gt;
&lt;/ul&gt;


&lt;h3&gt;Diagrama de bloco&lt;/h3&gt;


&lt;p&gt;Observe como seria no diagrama de blocos a resolução do  nosso problema.&lt;/p&gt;


&lt;p class=&quot;center&quot;&gt;
    &lt;img src=&quot;/img/artigos/o-loop-for-as-estruturas-de-controle-aninhadas-o-break-e-o-continue-no-php/diagrama-de-blocos-de-estruturas-aninhadas-no-php.jpg&quot; alt=&quot;Diagrama de blocos de estruturas aninhadas no php&quot; /&gt;
&lt;/p&gt;


&lt;p&gt;Como  você deve ter observado não possuímos nenhum símbolo novo no nosso &lt;a href=&quot;/artigo/o-algoritmo-o-diagrama-de-blocos-e-o-php&quot;&gt;diagrama de blocos&lt;/a&gt;.  Iniciamos a resolução do nosso problema com o símbolo denominado &lt;strong&gt;Processamento predefinido ou Preparação&lt;/strong&gt; para representarmos o looping &lt;code&gt;for&lt;/code&gt;, onde inserimos a sua lógica. Caso o for  retorne falso o processamento é encerrado e nada é exibido. Caso retorne  verdadeiro iniciamos o looping e nos deparamos com uma estrutura aninha que é  representada por um &lt;a href=&quot;/artigo/if-else-e-elseif-as-estruturas-de-controle-no-php&quot;&gt;símbolo de  decisão, o losango&lt;/a&gt;. No símbolo de decisão a lógica é avaliada, caso o valor  retornado seja verdadeiro exibe o número e diz que é par, caso retorne falso o  número é exibido e diz-se que é impar. Após exibirmos o valor utilizamos o &lt;a href=&quot;/artigo/if-else-e-elseif-as-estruturas-de-controle-no-php&quot;&gt;pequeno  circulo, o conector&lt;/a&gt;, que foi utilizado para conectar as condições e todas  levarem para um mesmo destino, o inicio do looping for.&lt;/p&gt;


&lt;h3&gt;No PHP&lt;/h3&gt;


&lt;p&gt;Agora vamos ver no  PHP como ficaria no PHP a representação do diagrama de blocos anterior.&lt;/p&gt;


&lt;pre class=&quot;brush: php;&quot;&gt;
&amp;lt;?php

for( $i = 1; $i &amp;lt;= 100; $i++ ){

  if ( $i % 2 == 0 ){
    echo $i . &#39; é par &#39; . &#39;&amp;lt;br /&amp;gt;&#39; . PHP_EOL;
  } else {
    echo $i . &#39; é impar &#39; . &#39;&amp;lt;br /&amp;gt;&#39; . PHP_EOL;
  }

}

?&amp;gt;
&lt;/pre&gt;


&lt;p&gt;Inicialmente o  mesmo looping &lt;code&gt;for&lt;/code&gt; que aprendemos, no entanto observe que dentro do looping  surgiu uma &lt;a href=&quot;/artigo/if-else-e-elseif-as-estruturas-de-controle-no-php&quot;&gt;condicional if&lt;/a&gt; que é a nossa estrutura de controle  aninhada, pois se encontra dentro do looping &lt;code&gt;for&lt;/code&gt;.&lt;/p&gt;


&lt;p&gt;A nossa lógica do &lt;code&gt;if&lt;/code&gt; é: se &lt;code&gt;$i&lt;/code&gt; módulo de 2 for  igual a zero retorna verdadeiro caso contrário falso. Ou seja se dividir &lt;code&gt;$i&lt;/code&gt; por  2 e não houver resto significa que &lt;code&gt;$i&lt;/code&gt; é par se não é impar.&lt;/p&gt;


&lt;div class=&quot;destaque&quot;&gt;
    &lt;p&gt;Caso esteja em  dúvida com a &lt;a href=&quot;/artigo/if-else-e-elseif-as-estruturas-de-controle-no-php&quot;&gt;estrutura de controle if&lt;/a&gt; ou o com o &lt;a href=&quot;/artigo/operadores-no-php&quot;&gt;operador  de módulo&lt;/a&gt; acesse seus  respectivos artigos.&lt;/p&gt;
    &lt;ul&gt;
        &lt;li&gt;&lt;a href=&quot;/artigo/if-else-e-elseif-as-estruturas-de-controle-no-php&quot;&gt;If, else e elseif as estruturas de controle  no PHP&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href=&quot;/artigo/operadores-no-php&quot;&gt;Operadores no PHP&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
&lt;/div&gt;


&lt;h4&gt;No PHP aninhando um pouco mais&lt;/h4&gt;


&lt;p&gt;Agora que já temos  o conceito de estruturas de controle aninhadas mostrarei mais um exemplo  prático no PHP, com mais de um nível de aninhamento.&lt;/p&gt;


&lt;div class=&quot;observacao&quot;&gt;
  &lt;p&gt;Mostrarei  direto no PHP, no entanto ele também pode ser representado no diagrama de  blocos, não o representarei no diagrama de blocos, pois o conceito no diagrama  de blocos foi explicado no exemplo anterior.&lt;/p&gt;
&lt;/div&gt;


&lt;h5&gt;Problema&lt;/h5&gt;


&lt;ul&gt;
    &lt;li&gt;Definir  um número premiado entre 1 e 100&lt;/li&gt;
    &lt;li&gt;criar  um programa que escreve de 1 a 100&lt;/li&gt;
    &lt;li&gt;imprimir  todos os números&lt;/li&gt;
    &lt;li&gt;Se o  número for o premiado mostrar ele com um destaque e escrever que é o premiado&lt;/li&gt;
    &lt;li&gt;ao lado  de todos os número mostar se o número é par ou impar, exceto do número premiado&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Veja como  poderíamos resolver este problema no PHP:&lt;/p&gt;


&lt;pre class=&quot;brush: php;&quot;&gt;
&amp;lt;?php

$premiado = 77;

for( $i = 1; $i &amp;lt;= 100; $i++ ){

  if( $i == $premiado ){

    echo &#39;&amp;lt;strong&amp;gt;&#39; .  $i . &#39; é o número premiado &#39; . &#39;&amp;lt;/strong&amp;gt;&amp;lt;br /&amp;gt;&#39; . PHP_EOL;

  } else {

      if ( $i % 2 == 0 ){
        echo $i . &#39; é par &#39; . &#39;&amp;lt;br /&amp;gt;&#39; . PHP_EOL;
      } else {
        echo $i . &#39; é impar &#39; . &#39;&amp;lt;br /&amp;gt;&#39; . PHP_EOL;
      }

  }

}

?&amp;gt;
&lt;/pre&gt;


&lt;p&gt;Como você deve ter  observado o programa é bem parecido com o anterior a diferença é que agora  criei uma variável com o nome de $premiado que armazenará o número premiado.&lt;br /&gt;E dentro do looping for antes de verificar se é par ou impar, verifico primeiro  se o número é o premiado, se for o exibo e escrevo que ele é premiado dentro de  uma tag strong se não faço a mesma verificação anterior para ver se ele é par  ou impar. Sendo assim a verificação de par ou impar foi aninhada por uma  verificação para ver se é o número premiado ou não.&lt;/p&gt;


&lt;p&gt;Se observar bem temos uma falha. Nada nos diz  que o número premiado deve estar entre 1 e 100 sendo assim se a pessoa colocar  um número maior que 100 não teremos nenhum premiado veja só um exemplo.&lt;/p&gt;


&lt;pre class=&quot;brush: php;&quot;&gt;
&amp;lt;?php

$premiado = 700;

for( $i = 1; $i &amp;lt;= 100; $i++ ){

  if( $i == $premiado ){

    echo &#39;&amp;lt;strong&amp;gt;&#39; .  $i . &#39; é o número premiado &#39; . &#39;&amp;lt;/strong&amp;gt;&amp;lt;br /&amp;gt;&#39; . PHP_EOL;

  } else {

      if ( $i % 2 == 0 ){
        echo $i . &#39; é par &#39; . &#39;&amp;lt;br /&amp;gt;&#39; . PHP_EOL;
      } else {
        echo $i . &#39; é impar &#39; . &#39;&amp;lt;br /&amp;gt;&#39; . PHP_EOL;
      }

  }

}

?&amp;gt;
&lt;/pre&gt;


&lt;p&gt;Mais em nosso jogo  por política da casa sempre teremos um vencedor. Sendo assim temos que limitar a  escolha dos números entre 1 e 100. Abaixo como limitar a escolha entre 1 e 100  mais antes de olhar o código pare um pouco aqui e tente resolver por si só.&lt;/p&gt;


&lt;pre class=&quot;brush: php;&quot;&gt;
&amp;lt;?php

$premiado = 77;

if( $premiado &amp;lt; 100 ){

    for( $i = 1; $i &amp;lt;= 100; $i++ ){

      if( $i == $premiado ){

        echo &#39;&amp;lt;strong&amp;gt;&#39; .  $i . &#39; é o número premiado &#39; . &#39;&amp;lt;/strong&amp;gt;&amp;lt;br /&amp;gt;&#39; . PHP_EOL;

      } else {

          if ( $i % 2 == 0 ){
            echo $i . &#39; é par &#39; . &#39;&amp;lt;br /&amp;gt;&#39; . PHP_EOL;
          } else {
            echo $i . &#39; é impar &#39; . &#39;&amp;lt;br /&amp;gt;&#39; . PHP_EOL;
          }

      }

    }

} else {

  echo &#39;O número deve ser menor que 100&#39;;

}

?&amp;gt;
&lt;/pre&gt;


&lt;p&gt;Como você deve ter  imaginado apenas aninhamos toda a nossa estrutura anterior em uma condicional,  ou seja, antes de iniciar o looping para dizer qual o premiado, primeiro  verificamos se  o &lt;code&gt;$premiado&lt;/code&gt; que foi  passado é menor que 100 se for iniciamos o mesmo processo anterior se não  retornamos uma mensagem dizendo que o número deve ser menor que 100.&lt;/p&gt;


&lt;div class=&quot;dica&quot;&gt;
    &lt;p&gt;Em relação as estruturas de controle aninhadas:&lt;/p&gt;
    &lt;ul&gt;
        &lt;li&gt;Podem ser aninhadas as &lt;a href=&quot;/artigo/if-else-e-elseif-as-estruturas-de-controle-no-php&quot;&gt;estruturas de  controle&lt;/a&gt; como também os &lt;a href=&quot;/artigo/lacos-de-repeticao-while-e-do-while-no-php&quot;&gt;laços de repetições,  loopings&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;Não a limite de condições que podemos aninhar&lt;/li&gt;
        &lt;li&gt;No entanto o bom senso conta, não crie um  aninhamento de por exemplo 10 níveis será difícil de entender quando for ver o  código novamente&lt;/li&gt;
        &lt;li&gt;Se as estruturas aninhadas estiverem com uma  grande quantidade de níveis tente rever sua lógica&lt;/li&gt;
        &lt;li&gt;Endente o código referente ao bloco em 4 espaços  por questões de legibilidade, a como configurar o seu editor de texto para  transformar Tabs em espaços&lt;/li&gt;
      &lt;li&gt;Cada estrutura aninhada também deve ser  endentada em 4 espaços onde a sua estrutura pai terminou, veja nos exemplos  anteriores&lt;/li&gt;
    &lt;/ul&gt;
&lt;/div&gt;


&lt;h2&gt;Break&lt;/h2&gt;


&lt;p&gt;A instrução &lt;code&gt;break&lt;/code&gt; é  utilizada para encerrar a execução dos comandos &lt;code&gt;for&lt;/code&gt;, &lt;code&gt;foreach&lt;/code&gt;, falaremos deste  posteriormente, &lt;code&gt;while&lt;/code&gt;, &lt;code&gt;do-while&lt;/code&gt; e &lt;code&gt;switch&lt;/code&gt;. Permitindo que encerremos a instrução  a qualquer momento que desejarmos, sendo assim podemos avaliar uma expressão e  de acordo com o seu resultado encerrar a instrução.&lt;/p&gt;


&lt;h3&gt;Problema&lt;/h3&gt;


&lt;ul&gt;
    &lt;li&gt;Utilizar  o código criado anteriormente, no entanto agora ao chegar ao número premiado o  looping é encerrado.&lt;/li&gt;
&lt;/ul&gt;


&lt;h3&gt;No PHP&lt;/h3&gt;


&lt;p&gt;Para resolvermos o  problema com o conhecimento que possuímos até aqui sem o uso do &lt;code&gt;break&lt;/code&gt; poderíamos simplesmente fazer do seguinte modo:&lt;/p&gt;


&lt;pre class=&quot;brush: php;&quot;&gt;
&amp;lt;?php

$premiado = 77;

if( $premiado &amp;lt; 100 ){

    for( $i = 1; $i &amp;lt;= 100; $i++ ){

      if( $i == $premiado ){

        echo &#39;&amp;lt;strong&amp;gt;&#39; .  $i . &#39; é o número premiado &#39; . &#39;&amp;lt;/strong&amp;gt;&amp;lt;br /&amp;gt;&#39; . PHP_EOL;
        $i = 100;

      } else {

          if ( $i % 2 == 0 ){
            echo $i . &#39; é par &#39; . &#39;&amp;lt;br /&amp;gt;&#39; . PHP_EOL;
          } else {
            echo $i . &#39; é impar &#39; . &#39;&amp;lt;br /&amp;gt;&#39; . PHP_EOL;
          }

      }

    }

} else {

  echo &#39;O número deve ser menor que 100&#39;;

}

?&amp;gt;
&lt;/pre&gt;


&lt;p&gt;Simplesmente  fizemos a condição do looping retornar falso, para isso definimos &lt;code&gt;$i&lt;/code&gt; com o  valor de 100 pois a condição do looping dizia que ele operaria até &lt;code&gt;$i&lt;/code&gt; for menor  ou igual a 100.&lt;/p&gt;


&lt;div class=&quot;destaque&quot;&gt;
    &lt;p&gt;Caso esteja em  dúvida com o looping for volte um pouco e recapitule o que cada uma de suas  expressões representam.&lt;/p&gt;
&lt;/div&gt;


&lt;p&gt;Agora veja um  exemplo de como podemos usar o &lt;code&gt;break&lt;/code&gt; para resolver o mesmo problema.&lt;/p&gt;


&lt;pre class=&quot;brush: php;&quot;&gt;
&amp;lt;?php

$premiado = 77;

if( $premiado &amp;lt; 100 ){

    for( $i = 1; $i &amp;lt;= 100; $i++ ){

      if( $i == $premiado ){

        echo &#39;&amp;lt;strong&amp;gt;&#39; .  $i . &#39; é o número premiado &#39; . &#39;&amp;lt;/strong&amp;gt;&amp;lt;br /&amp;gt;&#39; . PHP_EOL;
        break;

      } else {

          if ( $i % 2 == 0 ){
            echo $i . &#39; é par &#39; . &#39;&amp;lt;br /&amp;gt;&#39; . PHP_EOL;
          } else {
            echo $i . &#39; é impar &#39; . &#39;&amp;lt;br /&amp;gt;&#39; . PHP_EOL;
          }

      }

    }

} else {

  echo &#39;O número deve ser menor que 100&#39;;

}

?&amp;gt;
&lt;/pre&gt;


&lt;p&gt;Simplesmente  substituímos à atribuição de um valor a &lt;code&gt;$i&lt;/code&gt; para tornar a condição do looping  falsa por uma instrução &lt;code&gt;break&lt;/code&gt;. Sendo assim ao utilizar o &lt;code&gt;break&lt;/code&gt; automaticamente  o looping é encerrado e o processamento continua fora do looping.&lt;/p&gt;


&lt;h3&gt;Break e o seu valor opcional&lt;/h3&gt;


&lt;p&gt;O break pode receber um valor opcional indicando  quantos níveis devem ser encerrados, caso possua estruturas de controle  aninhadas.&lt;/p&gt;


&lt;h4&gt;Problema&lt;/h4&gt;


&lt;ul&gt;
    &lt;li&gt;Programa  que escreva de 1 a 100&lt;/li&gt;
    &lt;li&gt;E  abaixo de cada número exiba a frase “Contando...” e os 5 próximos números&lt;/li&gt;
    &lt;li&gt;E  quando o número da contagem for igual a 7 &lt;strong&gt;parar  todo o processamento&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;h4&gt;No PHP&lt;/h4&gt;


&lt;p&gt;Veja como poderíamos resolver este problema&lt;/p&gt;


&lt;pre class=&quot;brush: php;&quot;&gt;
&amp;lt;?php

for( $i = 1; $i &amp;lt;= 100; $i++ ){

  echo &#39;&amp;lt;br /&amp;gt;&#39; . $i . &#39;&amp;lt;br /&amp;gt;&#39; . PHP_EOL;
  echo &#39;Contando...&#39;;

  for( $j = $i + 1; $j &amp;lt;= $i + 5; $j++ ){

    if( $j != $i + 5 ){
      echo $j . &#39;, &#39;;
    } else {
      echo $j;
    }

    if($j == 7){
      break 2;
    }

  }

}


?&amp;gt;
&lt;/pre&gt;


&lt;p&gt;Primeiro criamos um  for para mostra os números de 1 a 100 e a frase “Contando...”, dentro deste looping  criamos outro looping for, observe que neste utilizamos como contador &lt;code&gt;$j&lt;/code&gt; que  possui o valor de &lt;code&gt;$i + 1&lt;/code&gt; e como é para mostrar os 5 números próximos a partir  do número antes do contando utilizamos o valor &lt;code&gt;$i + 5&lt;/code&gt; e incrementamos &lt;code&gt;$j&lt;/code&gt;.  Utilizamos &lt;code&gt;$i&lt;/code&gt; para atribuir os valores a &lt;code&gt;$j&lt;/code&gt; devido a &lt;code&gt;$i&lt;/code&gt; ser trocado em toda  volta sendo assim sempre teremos &lt;code&gt;$j&lt;/code&gt; dinâmico de acordo com o valor de &lt;code&gt;$i&lt;/code&gt;.  Dentro do looping possuímos um &lt;code&gt;if&lt;/code&gt; que verifica se &lt;strong&gt;não&lt;/strong&gt; é a ultima volta do looping se não for coloca virgula quando  for a ultima não coloca a virgula. E o outro &lt;code&gt;if&lt;/code&gt; é quando verificamos se &lt;code&gt;$j&lt;/code&gt; é  igual a 7 se for utilizamos &lt;code&gt;break 2&lt;/code&gt;. Utilizamos o &lt;code&gt;break&lt;/code&gt; com o valor de 2  dizendo para ele encerrar 2 níveis, sendo primeiro o looping de &lt;code&gt;$j&lt;/code&gt; e depois o  looping de &lt;code&gt;$i&lt;/code&gt;.&lt;/p&gt;


&lt;p&gt;Observe como seria  se utilizássemos apenas o break.&lt;/p&gt;


&lt;pre class=&quot;brush: php;&quot;&gt;
&amp;lt;?php

for( $i = 1; $i &amp;lt;= 100; $i++ ){

  echo &#39;&amp;lt;br /&amp;gt;&#39; . $i . &#39;&amp;lt;br /&amp;gt;&#39; . PHP_EOL;
  echo &#39;Contando...&#39;;

  for( $j = $i + 1; $j &amp;lt;= $i + 5; $j++ ){

    if( $j != $i + 5 ){
      echo $j . &#39;, &#39;;
    } else {
      echo $j;
    }

    if($j == 7){
      break;
    }

  }

}


?&amp;gt;
&lt;/pre&gt;


&lt;p&gt;Conseguimos  encerrar o looping de &lt;code&gt;$j&lt;/code&gt; quando fosse o valor 7 no entanto observe que o  looping de &lt;code&gt;$i&lt;/code&gt; é executado. Está é a utilidade de adicionar um valor ao &lt;code&gt;break&lt;/code&gt;,  pois assim você consegue encerrar quantos níveis forem necessários passando o  valor para o &lt;code&gt;break&lt;/code&gt;.&lt;/p&gt;


&lt;div class=&quot;dica&quot;&gt;
    &lt;p&gt;Em relação ao &lt;code&gt;break&lt;/code&gt;:&lt;/p&gt;
    &lt;ul&gt;
        &lt;li&gt;É utilizado nos comandos &lt;code&gt;for&lt;/code&gt;, &lt;code&gt;foreach&lt;/code&gt;, falaremos deste posteriormente,  &lt;code&gt;while&lt;/code&gt;, &lt;code&gt;do-while&lt;/code&gt; e &lt;code&gt;switch&lt;/code&gt;.&lt;/li&gt;
        &lt;li&gt;Sua função é finalizar uma instrução, das  citadas anteriormente.&lt;/li&gt;
        &lt;li&gt;Pode receber um valor adicional indicando  quantos níveis devem ser encerrados.&lt;/li&gt;
      &lt;li&gt;Para o break receber um valor adicional o mesmo  deve está dentro de uma estrutura aninhada&lt;/li&gt;
    &lt;/ul&gt;
&lt;/div&gt;


&lt;h2&gt;Continue&lt;/h2&gt;


&lt;p&gt;Bastante parecido com o &lt;code&gt;break&lt;/code&gt;, a instrução &lt;code&gt;continue&lt;/code&gt; permite que a execução do looping seja alterada, no entanto não  encerramos o looping, apenas encerramos a &lt;strong&gt;iteração&lt;/strong&gt;,  volta do looping, atual e iniciamos a próxima.&lt;/p&gt;


&lt;h3&gt;Problema&lt;/h3&gt;


&lt;ul&gt;
    &lt;li&gt;Um  looping for, predefinido terá que ser utilizado, este looping exibe os números  de 1 a 100.&lt;/li&gt;
    &lt;li&gt;Dentro  deste looping exiba apenas os números pares&lt;/li&gt;
&lt;/ul&gt;


&lt;h3&gt;No PHP&lt;/h3&gt;


&lt;p&gt;Veja a nossa  possível solução para este problema no PHP.&lt;/p&gt;


&lt;pre class=&quot;brush: php;&quot;&gt;
&amp;lt;?php

for( $i = 1; $i &amp;lt;= 100; $i++ ){

  if( $i % 2 != 0 ){
    continue;
  }

  echo $i . &#39;&amp;lt;br /&amp;gt;&#39; . PHP_EOL;

}


?&amp;gt;
&lt;/pre&gt;


&lt;p&gt;Mantemos  o looping do problema e dentro dele criamos um &lt;a href=&quot;/artigo/if-else-e-elseif-as-estruturas-de-controle-no-php&quot;&gt;if&lt;/a&gt; em que se módulo de &lt;code&gt;$i&lt;/code&gt; &lt;strong&gt;não&lt;/strong&gt; for igual a 0, ou seja não é par, utilizamos o continue para  irmos para próxima volta do looping.&lt;/p&gt;


&lt;h3&gt;Continue e o seu valor opcional&lt;/h3&gt;


&lt;p&gt;Assim como o &lt;code&gt;break&lt;/code&gt; o &lt;code&gt;continue&lt;/code&gt; também pode receber um valor opcional indicando quantos níveis devem ser  encerrados. Lembrando que deve possuir estruturas de controle aninhadas.&lt;/p&gt;


&lt;h4&gt;Problema&lt;/h4&gt;


&lt;ul&gt;
    &lt;li&gt;Programa  que escreva de 1 a 100&lt;/li&gt;
    &lt;li&gt;E  abaixo de cada número exiba a frase “Contando...” e os 5 próximos números&lt;/li&gt;
    &lt;li&gt;Quando  o número da contagem for igual a sete ele deve ser ignorado, se houver mais &lt;strong&gt;números&lt;/strong&gt; depois dele &lt;strong&gt;não&lt;/strong&gt; deve ser exibido também&lt;/li&gt;
&lt;/ul&gt;


&lt;h4&gt;No PHP&lt;/h4&gt;


&lt;p&gt;Veja como  poderíamos resolver este problema:&lt;/p&gt;


&lt;pre class=&quot;brush: php;&quot;&gt;
&amp;lt;?php

for( $i = 1; $i &amp;lt;= 100; $i++ ){

  echo &#39;&amp;lt;br /&amp;gt;&#39; . $i . &#39;&amp;lt;br /&amp;gt;&#39; . PHP_EOL;
  echo &#39;Contando...&#39;;

  for( $j = $i + 1; $j &amp;lt;= $i + 5; $j++ ){

    if( $j == 7 ){
      continue 2;
    }

    if( $j != $i + 5 ){
      echo $j . &#39;, &#39;;
    } else {
      echo $j;
    }



  }

}


?&amp;gt;
&lt;/pre&gt;


&lt;p&gt;Como você pode ver  a lógica é a mesma que utilizamos no &lt;code&gt;break 2&lt;/code&gt;, no entanto observe que usamos o  continue com o valor 2. Sendo assim sempre que houver um 7 na contagem saímos  do segundo looping e iniciamos no primeiro looping.&lt;/p&gt;


&lt;p&gt;Observe como seria  se utilizássemos apenas o continue:&lt;/p&gt;


&lt;pre class=&quot;brush: php;&quot;&gt;
&amp;lt;?php

for( $i = 1; $i &amp;lt;= 100; $i++ ){

  echo &#39;&amp;lt;br /&amp;gt;&#39; . $i . &#39;&amp;lt;br /&amp;gt;&#39; . PHP_EOL;
  echo &#39;Contando...&#39;;

  for( $j = $i + 1; $j &amp;lt;= $i + 5; $j++ ){

    if( $j == 7 ){
      continue;
    }

    if( $j != $i + 5 ){
      echo $j . &#39;, &#39;;
    } else {
      echo $j;
    }

  }

}


?&amp;gt;
&lt;/pre&gt;


&lt;p&gt;Encerramos a iteração, a volta, do looping de &lt;code&gt;$j&lt;/code&gt; quando o  valor fosse igual a 7 no entanto retornamos para o looping de &lt;code&gt;$j&lt;/code&gt; já com o valor  do continue conseguimos encerrar quantos níveis forem necessários.&lt;/p&gt;


&lt;div class=&quot;dica&quot;&gt;
    &lt;p&gt;Em relação ao &lt;code&gt;continue&lt;/code&gt;:&lt;/p&gt;
    &lt;ul&gt;
        &lt;li&gt;É utilizado nos comandos &lt;code&gt;for&lt;/code&gt;, &lt;code&gt;foreach&lt;/code&gt;, falaremos deste posteriormente,  &lt;code&gt;while&lt;/code&gt;, &lt;code&gt;do-while&lt;/code&gt; e &lt;code&gt;switch&lt;/code&gt;.&lt;/li&gt;
        &lt;li&gt;Sua função é finalizar uma iteração, volta, das  citadas anteriormente.&lt;/li&gt;
        &lt;li&gt;Pode receber um valor adicional indicando  quantos níveis o &lt;code&gt;continue&lt;/code&gt; deve considerar para encerrar a iteração.&lt;/li&gt;
        &lt;li&gt;Para o &lt;code&gt;continue&lt;/code&gt; receber um valor adicional o  mesmo deve está dentro de uma estrutura aninhada&lt;/li&gt;
    &lt;/ul&gt;
&lt;/div&gt;

</content>
 </entry>
 
 <entry>
   <id>http://aprenderphp.com.br/artigo/lacos-de-repeticao-while-e-do-while-no-php</id>
   <title>Laços de repetição while e do while no PHP</title>
   <link type="text/html" href="http://aprenderphp.com.br/artigo/lacos-de-repeticao-while-e-do-while-no-php"/>
   <updated>2010-06-24T00:00:00-07:00</updated>
   <content type="html">&lt;h2&gt;Introdução&lt;/h2&gt;


&lt;p&gt;Quando for  necessário efetuar a repetição de um trecho de um programa um determinado  número de vezes o que você faria? Escreveria de novo? Copiaria e colaria? Bem  feio né? Afinal estamos utilizando de maquinas que são feitas para trabalhar  para nos e não o contrario. Quando encontrarmos um problema como o apresentado  anteriormente temos os laços de repetição, também conhecidos como loopings ou  laços malhas de repetição que poderão nos ajudar. Vamos a um problema para  tentarmos resolver:&lt;/p&gt;


&lt;h2&gt;Problema&lt;/h2&gt;


&lt;p&gt;Bart Simpson ficou  novamente na detenção no final da aula. E como punição terá que escrever:  “Estou aprendendo loopings no Aprender PHP” 100 vezes no quadro, ou no nosso  caso na tela.&lt;/p&gt;


&lt;p&gt;Com o conhecimento  que aprendemos até aqui faríamos algo como:&lt;/p&gt;


&lt;pre class=&quot;brush: php;&quot;&gt;
&amp;lt;?php

$mensagem = &quot;Estou aprendendo loopings no Aprender PHP&quot;;

echo $mensagem . &#39;&amp;lt;br /&amp;gt;&#39; . PHP_EOL ;
echo $mensagem . &#39;&amp;lt;br /&amp;gt;&#39; . PHP_EOL ;
echo $mensagem . &#39;&amp;lt;br /&amp;gt;&#39; . PHP_EOL ;

?&amp;gt;
&lt;/pre&gt;


&lt;p&gt;Até repetirmos 100 vezes. O que não é muito inteligente né?  Vamos conhecer agora a nossa primeira estrutura de repetição, o while.&lt;/p&gt;


&lt;h2&gt;O while no PHP&lt;/h2&gt;


&lt;p&gt;O while executa um  teste lógico, que retorne verdadeiro ou falso, no inicio do looping para  verificar se é permitido ou não executar as instruções. Traduzindo while para  português obtemos “enquanto” sendo assim as instruções serão executadas  enquanto o teste do looping for considerado verdadeiro.&lt;/p&gt;


&lt;p&gt;A estrutura while  tem seu funcionamento controlado por decisões podendo executar um determinado  conjunto de instruções enquanto a condição for verdadeira (&lt;code&gt;True&lt;/code&gt;) e no momento  em que a condição for avaliada como falsa (&lt;code&gt;False&lt;/code&gt;) o processamento da rotina é  desviado para fora do looping. Se desde o inicio a condição for tratada como  falsa o looping não será executado.&lt;/p&gt;


&lt;h3&gt;Diagrama de blocos&lt;/h3&gt;


&lt;p&gt;Observe como seria  a representação do problema de Bart Simpson utilizando o while.&lt;/p&gt;


&lt;p class=&quot;center&quot;&gt;
  &lt;img alt=&quot;Diagrama de blocos do while no php&quot; src=&quot;/img/artigos/lacos-de-repeticao-while-e-do-while-no-php/diagrama-de-blocos-do-while-no-php.jpg&quot; /&gt;
&lt;/p&gt;


&lt;p&gt;Não temos nenhum  símbolo novo no nosso &lt;a href=&quot;/artigo/o-algoritmo-o-diagrama-de-blocos-e-o-php&quot;&gt;diagrama&lt;/a&gt;. Iniciamos  com 2 blocos de processamento de dados, um para o criarmos a mensagem e outro  para criar o contador, &lt;code&gt;$i&lt;/code&gt;, saberá mais sobre o contador abaixo. Em seguida  criamos um &lt;a href=&quot;/artigo/if-else-e-elseif-as-estruturas-de-controle-no-php&quot;&gt;símbolo de decisão, o losango&lt;/a&gt;. Se contador for menor que 100 o bloco  dentro do looping será executado que consiste em imprimir os dados na tela e  incrementar em 1 o contador e voltar ao inicio do looping. Quando o contador  for maior que 100 encerrasse o looping.&lt;/p&gt;


&lt;h3&gt;No PHP&lt;/h3&gt;


&lt;p&gt;Observe como  ficaria a representação em PHP da nossa estrutura while para resolver o  problema de Bart Simpson. E como Bart demorou muito ele ainda teve que numerar  para termos certeza que ele escreveu às 100 vezes. Observe o código:&lt;/p&gt;


&lt;pre class=&quot;brush: php;&quot;&gt;
&amp;lt;?php

$mensagem = &quot;Estou aprendendo loopings no Aprender PHP&quot;;

$i = 1;
while( $i &amp;lt;= 100 ){
  echo $i . &#39; - &#39; .$mensagem . &#39;&amp;lt;br /&amp;gt;&#39; . PHP_EOL ;
  $i++;
}

?&amp;gt;
&lt;/pre&gt;


&lt;p&gt;Iniciamos  atribuindo um valor a &lt;a href=&quot;/artigo/comecando-a-programar-em-php&quot;&gt;variável&lt;/a&gt; mensagem em seguida criamos uma variável &lt;code&gt;$i&lt;/code&gt; que é conhecida como  contador ou sentinela. Logo abaixo de nosso contador iniciamos o while que  avalia se &lt;code&gt;$i&lt;/code&gt; é menor que 100, se for verdadeiro ele executa a instrução se não  ele sai do looping. A primeira volta de nosso looping a instrução é verdadeira  então dentro do looping escrevemos a mensagem e somamos mais 1 a variável &lt;code&gt;$i&lt;/code&gt;  com o operador de &lt;a href=&quot;/artigo/operadores-no-php&quot;&gt;pós incremento&lt;/a&gt;.  Após terminar isto o looping volta e avalia &lt;code&gt;$i&lt;/code&gt; aqui com o valor de 2 e se for  verdadeira a expressão do while inicia tudo novamente.&lt;/p&gt;


&lt;p&gt;Você sabe o porquê do &lt;code&gt;$i&lt;/code&gt; no nosso looping? A  utilidade dele ali é fazer em um momento a expressão se tornar falsa senão  teremos um looping infinito. Como o nosso while avalia se &lt;code&gt;$i&lt;/code&gt; é menor que 100 se  sempre ele for menor que 100 o looping nunca parará, por isso que temos que incrementá-lo  para poder uma hora ele chegar ao valor em que a instrução se tornará falsa.  Observe o código em que não incrementamos o &lt;code&gt;$i&lt;/code&gt; antes de sairmos do looping.  Execute e rapidamente pause a execução do browser, pois como isto nunca terá  fim seu browser vai ir ficando bem lento e podendo até travar. Se não quiser  testar o resultado será “1 - Estou aprendendo loopings no Aprender PHP”  infinitamente um por linha.&lt;/p&gt;


&lt;pre class=&quot;brush: php;&quot;&gt;
&amp;lt;?php

$mensagem = &quot;Estou aprendendo loopings no Aprender PHP&quot;;

$i = 1;
while( $i &amp;lt;= 100 ){
  echo $i . &#39; - &#39; .$mensagem . &#39;&amp;lt;br /&amp;gt;&#39; . PHP_EOL ;
}

?&amp;gt;
&lt;/pre&gt;


&lt;p&gt;Observe agora o  mesmo exemplo de Bart Simpson escrevendo de 1 a 100, no entanto agora ele  escrevendo os números em ordem decrescente.&lt;/p&gt;


&lt;pre class=&quot;brush: php;&quot;&gt;
&amp;lt;?php

$mensagem = &quot;Estou aprendendo loopings no Aprender PHP&quot;;

$i = 100;
while( $i &amp;gt;= 1 ){
  echo $i . &#39; - &#39; .$mensagem . &#39;&amp;lt;br /&amp;gt;&#39; . PHP_EOL ;
  $i--;
}

?&amp;gt;
&lt;/pre&gt;


&lt;p&gt;Veja que alteramos  apenas a lógica agora iniciamos o &lt;code&gt;$i&lt;/code&gt; com 100 e executamos o looping enquanto &lt;code&gt;$i&lt;/code&gt;  for maior ou igual a 1 e a cada volta do looping diminuímos um para que em um  momento termos &lt;code&gt;$i&lt;/code&gt; com o valor de 1 e encerrarmos o looping.&lt;/p&gt;


&lt;div class=&quot;dica&quot;&gt;
    &lt;p&gt;Em relação à estrutura de controle while:&lt;/p&gt;
    &lt;ul&gt;
        &lt;li&gt;A expressão a ser avaliada é declarada no inicio  do while&lt;/li&gt;
        &lt;li&gt;Expressões são realizadas por &lt;a href=&quot;/artigo/operadores-de-comparacao-operadores-logicos-e-a-precedencia-dos-operadores-no-php&quot;&gt;operadores  lógicos e operadores de comparação&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;O looping é executado enquanto a condição da  expressão for verdadeira (&lt;code&gt;True&lt;/code&gt;)&lt;/li&gt;
        &lt;li&gt;Quando  a condição da expressão for avaliada como falsa (&lt;code&gt;False&lt;/code&gt;) o processamento da  rotina é desviado para fora do looping&lt;/li&gt;
        &lt;li&gt;O bloco de código referente ao looping deve ser  delimitado por chaves {}&lt;/li&gt;
        &lt;li&gt;Endente o código referente ao bloco em 4 espaços  por questões de legibilidade, a como configurar o seu editor de texto para  transformar Tabs em espaços&lt;/li&gt;
        &lt;li&gt;Utilizamos um contador para o looping não ficar  um looping infinito&lt;/li&gt;
        &lt;li&gt;Declara-se o contador &lt;strong&gt;fora&lt;/strong&gt; do looping&lt;/li&gt;
        &lt;li&gt;Não se esqueça de alterar o valor do contador  para não cairmos em um looping infinito.&lt;/li&gt;
    &lt;/ul&gt;
&lt;/div&gt;


&lt;h2&gt;O do-while no PHP&lt;/h2&gt;


&lt;p&gt;Bastante parecido com o while o do-while  caracteriza-se por uma estrutura que executa um teste lógico no fim do looping.  Tem seu funcionamento baseado em decisões assim como o while, no entanto &lt;strong&gt;pelo menos uma vez&lt;/strong&gt; será executado o  conjunto de instruções, pois a condição da validade, verdadeiro ou falso, é  avaliado no final.&lt;/p&gt;


&lt;h2&gt;Problema&lt;/h2&gt;


&lt;p&gt;Continuaremos o mesmo problema de Bart Simpson, no entanto  agora utilizando o do-while.&lt;/p&gt;


&lt;h3&gt;Diagrama de blocos&lt;/h3&gt;


&lt;p&gt;Veja como seria a  representação do mesmo problema de Bart, no entanto agora utilizando o  do-while.&lt;/p&gt;


&lt;p class=&quot;center&quot;&gt;
  &lt;img alt=&quot;Diagrama de blocos do do-while no php&quot; src=&quot;/img/artigos/lacos-de-repeticao-while-e-do-while-no-php/diagrama-de-blocos-do-do-while-no-php.jpg&quot; /&gt;
&lt;/p&gt;


&lt;p&gt;Basicamente o mesmo  diagrama de blocos do feito anteriormente para o while, no entanto observe que  a expressão é avaliada no final, se for verdadeira a expressão escrevemos a  mensagem e incrementamos em 1 o contador se for falsa saímos do looping.&lt;/p&gt;


&lt;h3&gt;No PHP&lt;/h3&gt;


&lt;p&gt;Observe como  ficaria a representação em PHP da solução do problema de Bart Simpson agora com  o uso do do-while.&lt;/p&gt;


&lt;pre class=&quot;brush: php;&quot;&gt;
&amp;lt;?php

$mensagem = &quot;Estou aprendendo loopings no Aprender PHP&quot;;

$i = 1;

do {
  echo $i . &#39; - &#39; .$mensagem . &#39;&amp;lt;br /&amp;gt;&#39; . PHP_EOL ;
  $i++;
} while( $i &amp;lt;= 100 );

?&amp;gt;
&lt;/pre&gt;


&lt;p&gt;Você observou que  temos todos os elementos que tínhamos no while né? O contador, incrementar o  contador, uma expressão. No entanto agora temos o “do” que quer dizer que pelo  menos uma vez será executado mesmo que a condição na expressão seja avaliada  como falsa, lembrando que assim como o while o do-while é executado enquanto a  expressão for verdadeira, observe abaixo onde Bart muito esperto alterou seu  contador para dizer ao diretor que já havia escrito 150 vezes.&lt;/p&gt;


&lt;pre class=&quot;brush: php;&quot;&gt;
&amp;lt;?php

$mensagem = &quot;Estou aprendendo loopings no Aprender PHP&quot;;

$i = 150;

do {
  echo $i . &#39; - &#39; .$mensagem . &#39;&amp;lt;br /&amp;gt;&#39; . PHP_EOL ;
  $i++;
} while( $i &amp;lt;= 100 );

?&gt;
&lt;/pre&gt;


&lt;p&gt;Veja que mesmo a  expressão sendo falsa, 150 não é menor nem igual a 100, o looping foi executado  pelo menos uma vez, pois a avaliação da expressão é feita no final. Agora veja  com o while o que ocorreria.&lt;/p&gt;


&lt;pre class=&quot;brush: php;&quot;&gt;
&amp;lt;?php

$mensagem = &quot;Estou aprendendo loopings no Aprender PHP&quot;;

$i = 150;

while ( $i &amp;lt;= 100 ) {
  echo $i . &#39; - &#39; .$mensagem . &#39;&amp;lt;br /&amp;gt;&#39; . PHP_EOL ;
  $i++;
}

?&amp;gt;
&lt;/pre&gt;


&lt;p&gt;Como no while a expressão é avaliada no começo, o looping  não foi executado nenhuma vez.  Já no  do-while como a expressão só é avaliada no final pelo menos uma vez o looping  será executado.&lt;/p&gt;


&lt;div class=&quot;dica&quot;&gt;
    &lt;p&gt;Em relação à estrutura de controle do- while:&lt;/p&gt;
    &lt;ul&gt;
        &lt;li&gt;A expressão a ser avaliada é declarada no final  do do-while&lt;/li&gt;
        &lt;li&gt;É garantido que pelo menos uma vez o looping  será executado devido à dica anterior&lt;/li&gt;
        &lt;li&gt;Expressões são realizadas por &lt;a href=&quot;/artigo/operadores-de-comparacao-operadores-logicos-e-a-precedencia-dos-operadores-no-php&quot;&gt;operadores  lógicos e operadores de comparação&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;O looping é executado enquanto a condição da  expressão for verdadeira (True)&lt;/li&gt;
        &lt;li&gt;Quando  a condição da expressão for avaliada como falsa (False) o processamento da  rotina é desviado para fora do looping&lt;/li&gt;
        &lt;li&gt;O bloco de código referente ao looping deve ser  delimitado por chaves {}&lt;/li&gt;
        &lt;li&gt;Endente o código referente ao bloco em 4 espaços  por questões de legibilidade, a como configurar o seu editor de texto para  transformar Tabs em espaços&lt;/li&gt;
        &lt;li&gt;Utilizamos um contador para o looping não ficar  um looping infinito&lt;/li&gt;
        &lt;li&gt;Declara-se o contador &lt;strong&gt;fora&lt;/strong&gt; do looping&lt;/li&gt;
        &lt;li&gt;Não se esqueça de alterar o valor do contador  para não cairmos em um looping infinito.&lt;/li&gt;
    &lt;/ul&gt;
&lt;/div&gt;

</content>
 </entry>
 
 <entry>
   <id>http://aprenderphp.com.br/artigo/o-switch-e-o-operador-ternario-no-php</id>
   <title>O switch e o operador ternário no PHP</title>
   <link type="text/html" href="http://aprenderphp.com.br/artigo/o-switch-e-o-operador-ternario-no-php"/>
   <updated>2010-05-25T00:00:00-07:00</updated>
   <content type="html">&lt;h2&gt;O switch no PHP&lt;/h2&gt;


&lt;p&gt;O switch funciona como uma série de &lt;code&gt;if&lt;/code&gt; juntos, mais sobre as &lt;a href=&quot;/artigo/if-else-e-elseif-as-estruturas-de-controle-no-php&quot;&gt;estruturas de controle if, else e elseif&lt;/a&gt; podem ser encontradas no artigo anterior, testando valores para uma  variável ou expressão. No entanto o switch trabalha basicamente com o &lt;a href=&quot;/artigo/operadores-de-comparacao-operadores-logicos-e-a-precedencia-dos-operadores-no-php&quot;&gt;operador de igualdade&lt;/a&gt;. Então em casos que devemos testar se nossa variável, ou expressão, &lt;strong&gt;é igual&lt;/strong&gt; a uma série de valores, o  &lt;code&gt;switch&lt;/code&gt; é uma boa saída. Vamos agora ver um problema para entendermos melhor o &lt;code&gt;switch&lt;/code&gt;.&lt;/p&gt;


&lt;h3&gt;Problema&lt;/h3&gt;


&lt;p&gt;Em um programa de televisão o expectador deve escolher números de 1 a 5 para um sorteio de prêmios, em que cada número representa um prêmio. Então faremos:&lt;/p&gt;


&lt;ol&gt;
    &lt;li&gt;Ler a entrada, o número que o expectador  escolheu&lt;/li&gt;
    &lt;li&gt;De acordo com o número que o expectador escolheu  retornar um prêmio&lt;/li&gt;
    &lt;li&gt;Se escolher um numero que não seja de 1 a 5  retornar uma mensagem de erro.&lt;/li&gt;
&lt;/ol&gt;


&lt;h3&gt;O diagrama de blocos&lt;/h3&gt;


&lt;p&gt;Observe como seria a representação do nosso problema no diagrama de blocos.&lt;/p&gt;


&lt;p&gt;&lt;img src=&quot;/img/artigos/o-switch-e-o-operador-ternario-no-php/diagrama-de-blocos-do-switch.jpg&quot; alt=&quot;Diagrama de blocos do switch&quot; /&gt;&lt;/p&gt;

&lt;p&gt;O símbolo de início e entrada de dados não são  novidades afinal foram abordados no artigo sobre o &lt;a href=&quot;/artigo/o-algoritmo-o-diagrama-de-blocos-e-o-php&quot;&gt;algoritmo e diagrama de blocos no  PHP&lt;/a&gt;, no entanto o  símbolo seguinte nos diz que iremos comparar o valor contido nele com os  símbolos de decisões seguintes. E como já foi falado no &lt;a href=&quot;/artigo/if-else-e-elseif-as-estruturas-de-controle-no-php&quot;&gt;artigo anterior&lt;/a&gt; utilizamos as setas para indicar a direção do  processamento. Como você pode observar no diagrama será testado cada um dos  valores se não for verdadeiro o próximo será testado até o último, chegando no  ultimo se nem o último for verdadeiro executamos o default, equivalente a um &lt;a href=&quot;/artigo/if-else-e-elseif-as-estruturas-de-controle-no-php&quot;&gt;else&lt;/a&gt;.&lt;/p&gt;


&lt;h3&gt;No PHP&lt;/h3&gt;


&lt;p&gt;O nosso problema poderia ser resolvido apenas  utilizando as &lt;a href=&quot;/artigo/if-else-e-elseif-as-estruturas-de-controle-no-php&quot;&gt;estruturas de controle if, else e elseif&lt;/a&gt; que aprendemos no artigo anterior. Antes de  ver o código abaixo tente resolver o nosso problema apenas com as estruturas de  controle que aprendemos até este ponto. Conseguiu? Veja um exemplo de como  poderia ser resolvido utilizando apenas &lt;code&gt;if&lt;/code&gt;, &lt;code&gt;else&lt;/code&gt; e &lt;code&gt;elseif&lt;/code&gt;:&lt;/p&gt;


&lt;pre class=&quot;brush: php;&quot;&gt;
&amp;lt;?php

/**
 * Entrada do número do expectador
 */
$numero = 3;

if ( $numero == 1 ){
  $mensagem = &#39;uma bicicleta&#39;;
} elseif ( $numero == 2 ) {
  $mensagem = &#39;20 mil reais em barras de ouro&#39;;
} elseif ( $numero == 3 ) {
  $mensagem = &#39;uma casa&#39;;
} elseif ( $numero == 4 ) {
  $mensagem = &#39;um conjunto de panelas&#39;;
} elseif ( $numero == 5 ) {
  $mensagem = &#39;um carro zero&#39;;
} else {
  $mensagem = &#39;nada, infelizmente&#39;;
}

/**
 * Retornando a mensagem
 */
echo &quot;Parabéns o seu prêmio foi: {$mensagem}&quot; ;

?&amp;gt;
&lt;/pre&gt;


&lt;p&gt;Não foi muito difícil  de resolver né? No entanto observe o código comparamos sempre a variável &lt;code&gt;$numero&lt;/code&gt; a um valor de 1 a 5 e retornávamos uma &lt;code&gt;$mensagem&lt;/code&gt;, e se não fosse de 1 a  5 retornaríamos que ele não ganhou nada. Se estamos sempre comparando uma  variável, ou expressão se são iguais a uma série de valores talvez seja à hora  de trocarmos de estrutura de controle.&lt;/p&gt;


&lt;p&gt;Ao utilizarmos o &lt;code&gt;switch&lt;/code&gt; informamos a variável ou expressão que será testada em cada uma das  cláusulas (&lt;code&gt;case&lt;/code&gt;) até que seja encontrada uma cláusula em que seja verdadeira.  Quando isto ocorre às instruções dentro do bloco de código da estrutura case é  executado até encontrar a instrução &lt;code&gt;break&lt;/code&gt;, falaremos mais sobre &lt;code&gt;break&lt;/code&gt; quando  chegarmos aos loops no PHP, se nenhuma cláusula for verdadeira a instrução &lt;code&gt;default&lt;/code&gt; será executada.&lt;/p&gt;


&lt;pre class=&quot;brush: php;&quot;&gt;
&amp;lt;?php

/**
 * Entrada do número do expectador
 */
$numero = 3;

switch ( $numero ){
  case 1:
    $mensagem = &#39;uma bicicleta&#39;;
    break;
  case 2:
    $mensagem = &#39;20 mil reais em barras de ouro&#39;;
    break;
  case 3:
    $mensagem = &#39;uma casa&#39;;
    break;
  case 4:
    $mensagem = &#39;um conjunto de panelas&#39;;
    break;
  case 5:
    $mensagem = &#39;um carro zero&#39;;
    break;
  default:
    $mensagem = &#39;nada, infelizmente&#39;;
}

/**
 * Retornando a mensagem
 */
echo &quot;Parabéns o seu prêmio foi: {$mensagem}&quot;;

?&amp;gt;
&lt;/pre&gt;


&lt;div class=&quot;observacao&quot;&gt;
    &lt;p&gt;Voltaremos a falar  sobre a instrução &lt;code&gt;break&lt;/code&gt; posteriormente, no entanto até este momento você só  deve ter em mente que se ela não for inserida seria como se não fechássemos a  instrução &lt;code&gt;case&lt;/code&gt;. Observe o exemplo abaixo mesmo passando um valor e ele for  verdadeiro todas as expressões abaixo do valor escolhido são executadas e como  atribuímos um valor a variável o que prevalece é da ultima, o &lt;code&gt;default&lt;/code&gt;, por este  motivo devemos sempre utilizar a instrução &lt;code&gt;break&lt;/code&gt;.&lt;/p&gt;
&lt;/div&gt;


&lt;pre class=&quot;brush: php;&quot;&gt;
&amp;lt;?php

/**
 * Entrada do número do expectador
 */
$numero = 3;

switch ( $numero ){
  case 1:
    $mensagem = &#39;uma bicicleta&#39;;
  case 2:
    $mensagem = &#39;20 mil reais em barras de ouro&#39;;
  case 3:
    $mensagem = &#39;uma casa&#39;;
  case 4:
    $mensagem = &#39;um conjunto de panelas&#39;;
  case 5:
    $mensagem = &#39;um carro zero&#39;;
  default:
    $mensagem = &#39;nada, infelizmente&#39;;
}

/**
 * Retornando a mensagem
 */
echo &quot;Parabéns o seu prêmio foi: {$mensagem}&quot; ;

?&amp;gt;
&lt;/pre&gt;


&lt;p&gt;Agora que sabemos o porquê do &lt;code&gt;break&lt;/code&gt;, podemos o aproveitar de uma maneira, por exemplo, se em nosso  problema caso a pessoa escolhesse 2 ou 3 o prêmio seria o mesmo. Poderíamos  apenas mudar o valor da variável mensagem para eles ficarem iguais, no entanto  estaríamos nos repetindo o que não é legal, pois sempre que tivéssemos que  alterar em um teríamos que lembrar de alterar no outro por isso. O melhor mesmo  é fazer da seguinte forma:&lt;/p&gt;


&lt;pre class=&quot;brush: php;&quot;&gt;
&amp;lt;?php

/**
 * Entrada do número do expectador
 */
$numero = 2;

switch ( $numero ){
  case 1:
    $mensagem = &#39;uma bicicleta&#39;;
    break;
  case 2:
  case 3:
    $mensagem = &#39;uma casa&#39;;
    break;
  case 4:
    $mensagem = &#39;um conjunto de panelas&#39;;
    break;
  case 5:
    $mensagem = &#39;um carro zero&#39;;
    break;
  default:
    $mensagem = &#39;nada, infelizmente&#39;;
}

/**
 * Retornando a mensagem
 */
echo &quot;Parabéns o seu prêmio foi: {$mensagem}&quot; ;

?&amp;gt;
&lt;/pre&gt;


&lt;p&gt;Como o valor que seria  mantido era o da cláusula 3 apenas retiramos as instruções da 2 e não colocamos &lt;code&gt;break&lt;/code&gt; na cláusula 2 sendo assim ela seria a mesma que a 3 esta sim tendo a  instrução &lt;code&gt;break&lt;/code&gt; como as demais.&lt;/p&gt;


&lt;div class=&quot;dica&quot;&gt;
    &lt;p&gt;Em relação a estrutura  de controle switch:&lt;/p&gt;
    &lt;ul&gt;
        &lt;li&gt;A variavel  ou expressão a ser avaliada é declarada no inicio do &lt;code&gt;switch&lt;/code&gt;&lt;/li&gt;
        &lt;li&gt;Expressões  são realizadas por &lt;a href=&quot;/artigo/operadores-de-comparacao-operadores-logicos-e-a-precedencia-dos-operadores-no-php&quot;&gt;operadores lógicos e operadores de  comparação&lt;/a&gt; &lt;/li&gt;
        &lt;li&gt;O bloco de  código referente a estrutura de controle deve ser delimitado por chaves &lt;code&gt;{}&lt;/code&gt;&lt;/li&gt;
        &lt;li&gt;Endente o código referente ao bloco em 4 espaços por questões de legibilidade, a como configurar o seu editor de texto para transformar Tabs em espaços&lt;/li&gt;
        &lt;li&gt;Cada  cláusula (&lt;code&gt;case&lt;/code&gt;) possui um valor a ser comparado e logo após o valor são  adicionado 2 pontos (&lt;code&gt;:&lt;/code&gt;) dando inicio a clausula&lt;/li&gt;
        &lt;li&gt;Após os 2  pontos o bloco de código que devera ser executado para aquela cláusula&lt;/li&gt;
        &lt;li&gt;Finalizamos  a cláusula com o &lt;code&gt;break&lt;/code&gt;&lt;/li&gt;
        &lt;li&gt;Caso  tenhamos 2 ou mais valores que executarão o mesmo bloco de código não definimos  o &lt;code&gt;break&lt;/code&gt; apenas no ultimo em que for inserido o bloco de código, ver o exemplo  anterior&lt;/li&gt;
        &lt;li&gt;Após todas  as cláusulas podemos adicionar uma cláusula &lt;code&gt;default&lt;/code&gt; que será executada caso  todas as outras não tenham sido verdadeiras&lt;/li&gt;
        &lt;li&gt;A cláusula  &lt;code&gt;default&lt;/code&gt; não necessita de &lt;code&gt;break&lt;/code&gt;, afinal ela é inserida após todas as outras&lt;/li&gt;
    &lt;/ul&gt;
&lt;/div&gt;


&lt;h2&gt;Operador ternário&lt;/h2&gt;


&lt;p&gt;O operador ternário basicamente é uma forma de  escrever uma instrução &lt;a href=&quot;/artigo/if-else-e-elseif-as-estruturas-de-controle-no-php&quot;&gt;if e else&lt;/a&gt; em uma única linha.  Para utilizamos o operador ternário utilizamos o &lt;code&gt;?&lt;/code&gt; e o &lt;code&gt;:&lt;/code&gt;. Observe um exemplo utilizando &lt;code&gt;if&lt;/code&gt; e &lt;code&gt;else&lt;/code&gt;:&lt;/p&gt;


&lt;pre class=&quot;brush: php;&quot;&gt;
&amp;lt;?php

$resultado = 7.5;

if ( $resultado &amp;gt; 7 ){
  echo &#39;Aprovado&#39;;
} else {
  echo &#39;Reprovado&#39;;
}

?&amp;gt;
&lt;/pre&gt;


&lt;p&gt;Um exemplo bem simples apenas para ilustrar, afinal &lt;a href=&quot;/artigo/if-else-e-elseif-as-estruturas-de-controle-no-php&quot;&gt;if e else&lt;/a&gt; já aprendemos.  Agora o mesmo código poderia ser transcrito com o operador ternário. Observe:&lt;/p&gt;


&lt;pre class=&quot;brush: php;&quot;&gt;
&amp;lt;?php

$resultado = 7.5;

echo $resultado &amp;gt; 7 ? &#39;Aprovado&#39; : &#39;Reprovado&#39;;

?&amp;gt;
&lt;/pre&gt;


&lt;p&gt;Resolvemos o mesmo  problema em apenas uma linha. O que vem seguido do &lt;code&gt;?&lt;/code&gt; representa o &lt;code&gt;if&lt;/code&gt; enquanto o &lt;code&gt;:&lt;/code&gt; representa o &lt;code&gt;else&lt;/code&gt;. Também podemos fazer atribuições utilizando o operador ternário. Observe:&lt;/p&gt;


&lt;pre class=&quot;brush: php;&quot;&gt;
&amp;lt;?php

$resultado = 7.5;

$mensagem = $resultado &amp;gt; 7 ? &#39;Aprovado&#39; : &#39;Reprovado&#39;;

echo $mensagem;

?&amp;gt;
&lt;/pre&gt;


&lt;p&gt;Agora a nossa variável &lt;code&gt;$mensagem&lt;/code&gt; recebe o valor de acordo com o resultado utilizando do operador ternário.&lt;/p&gt;


&lt;div class=&quot;observacao&quot;&gt;
    &lt;p&gt;Não utilize o operador  ternário para substituir sempre as estruturas&lt;a href=&quot;/artigo/if-else-e-elseif-as-estruturas-de-controle-no-php&quot;&gt;if e else&lt;/a&gt;. O operador ternário deve ser utilizado quando  o retorno e a lógica implementada for algo pequeno.  Por isso cabe ao desenvolvedor analisar se  vale a pena substituir uma instrução &lt;code&gt;if&lt;/code&gt; e &lt;code&gt;else&lt;/code&gt; por um operador ternário ou vice e versa. Pense na legibilidade, pois seu código pode ser lido futuramente por  outra pessoa na situação o que seria mais fácil de ler?&lt;/p&gt;
&lt;/div&gt;


&lt;div class=&quot;dica&quot;&gt;
    &lt;p&gt;Em relação ao operador  ternário:&lt;/p&gt;
    &lt;ul&gt;
        &lt;li&gt;Equivale a  um &lt;code&gt;if&lt;/code&gt; e &lt;code&gt;else&lt;/code&gt;. No entanto seu uso deve ser ponderado como pode ser lido  anteriormente.&lt;/li&gt;
        &lt;li&gt;A  expressão a ser avaliada é declarada no inicio do operador&lt;/li&gt;
        &lt;li&gt;O &lt;code&gt;?&lt;/code&gt; inicia  o bloco que pode ser lido como o &lt;code&gt;if&lt;/code&gt;&lt;/li&gt;
        &lt;li&gt;O &lt;code&gt;:&lt;/code&gt; inicia  o bloco que pode ser lido como &lt;code&gt;else&lt;/code&gt;.&lt;/li&gt;
        &lt;li&gt;O valor  retornado pode ser atribuído a uma variável.&lt;/li&gt;
    &lt;/ul&gt;
&lt;/div&gt;

</content>
 </entry>
 
 <entry>
   <id>http://aprenderphp.com.br/artigo/if-else-e-elseif-as-estruturas-de-controle-no-php</id>
   <title>If, else e elseif as estruturas de  controle no PHP</title>
   <link type="text/html" href="http://aprenderphp.com.br/artigo/if-else-e-elseif-as-estruturas-de-controle-no-php"/>
   <updated>2010-05-07T00:00:00-07:00</updated>
   <content type="html">&lt;h2&gt;Introdução&lt;/h2&gt;


&lt;p&gt;Você aprendeu trabalhar com a &lt;a href=&quot;/artigo/o-algoritmo-o-diagrama-de-blocos-e-o-php&quot;&gt;entrada, o processamento e a saída  de dados&lt;/a&gt; com a &lt;a href=&quot;/artigo/comecando-a-programar-em-php&quot;&gt;utilização de variáveis e constantes&lt;/a&gt; além dos &lt;a href=&quot;/artigo/operadores-no-php&quot;&gt;operadores aritméticos&lt;/a&gt; e o que fará mais sentido aqui os &lt;a href=&quot;/artigo/operadores-de-comparacao-operadores-logicos-e-a-precedencia-dos-operadores-no-php&quot;&gt;operadores de comparação e os operadores  lógicos&lt;/a&gt;.&lt;/p&gt;


&lt;p&gt;Até o momento sem as estruturas de controle não  podemos &lt;strong&gt;tomar decisões&lt;/strong&gt;. Imagine o seguinte  problema.&lt;/p&gt;


&lt;h3&gt;Problema&lt;/h3&gt;


&lt;ol&gt;
    &lt;li&gt;Ler a  entrada de 4 notas de um aluno&lt;/li&gt;
    &lt;li&gt;Obter  sua média&lt;/li&gt;
    &lt;li&gt;Se a média  for maior ou igual a 7 retornar aprovado menor que 7 retornar reprovado&lt;/li&gt;
    &lt;li&gt;Exibir a  média do aluno e se foi aprovado ou reprovado&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;Como você pode observar as partes 1 e 2 do  problema poderíamos resolver facilmente com os operadores aritméticos. Veja o  exemplo a seguir:&lt;/p&gt;


&lt;pre class=&quot;brush: php;&quot;&gt;
&amp;lt;?php

/**
 * Entrada das 4 notas do aluno
 */
$nota1 = 10;
$nota2 = 9;
$nota3 = 7;
$nota4 = 5;

/**
 * Obtendo a média do aluno
 */
$resultado = ($nota1 + $nota2 + $nota3 + $nota4) / 4;

/**
 * Retornando a média
 */
echo $resultado;

?&amp;gt;
&lt;/pre&gt;


&lt;div class=&quot;destaque&quot;&gt;
  &lt;p&gt;Caso não tenha entendido o uso dos operadores ou o porquê do parêntesis. Recomendo  antes de continuar ler o artigo sobre &lt;a href=&quot;/artigo/operadores-no-php&quot;&gt;operadores no PHP&lt;/a&gt; e  o artigo que fala sobre a &lt;a href=&quot;/artigo/operadores-de-comparacao-operadores-logicos-e-a-precedencia-dos-operadores-no-php&quot;&gt;precedência dos operadores no PHP&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;


&lt;p&gt;No entanto a parte 3, não poderíamos  desenvolver até aqui, pois necessitamos das estruturas de controle, que você  irá ver agora.&lt;/p&gt;


&lt;h2&gt;If o desvio condicional simples no  PHP&lt;/h2&gt;


&lt;p&gt;O construtor &lt;code&gt;If&lt;/code&gt; tem como  objetivo executar todo o código que esteja entre o construtor caso o resultado da avaliação seja verdadeiro caso contrario nada será executado.&lt;/p&gt;


&lt;p&gt;Continuando o problema anterior mais neste  ponto apenas um fragmento para ilustrar.&lt;/p&gt;


&lt;h3&gt;Problema&lt;/h3&gt;


&lt;ol&gt;
    &lt;li&gt;Ler a  entrada de 4 notas de um aluno&lt;/li&gt;
    &lt;li&gt;Obter sua  média&lt;/li&gt;
    &lt;li&gt;Se a média  for maior ou igual a 7 retornar aprovado&lt;/li&gt;
    &lt;li&gt;Exibir a média  do aluno e se foi aprovado&lt;/li&gt;
&lt;/ol&gt;


&lt;h3&gt;O diagrama de blocos&lt;/h3&gt;


&lt;p&gt;Observe como seria a  representação do nosso problema no diagrama de blocos.&lt;/p&gt;


&lt;p class=&quot;center&quot;&gt;
    &lt;img alt=&quot;Diagrama de blocos do problema apresentado&quot; src=&quot;/img/artigos/if-else-e-elseif-as-estruturas-de-controle-no-php/diagrama-de-blocos-do-problema-de-estruturas-de-controle-no-php.jpg&quot; /&gt;
&lt;/p&gt;


&lt;p&gt;O símbolo de inicio  não é nenhuma novidade afinal já foi explicado no artigo sobre &lt;a href=&quot;/artigo/o-algoritmo-o-diagrama-de-blocos-e-o-php&quot;&gt;algoritmo e diagrama de blocos no  PHP&lt;/a&gt;, o símbolo seguinte  também já é um conhecido nosso o de entrada de dados, no entanto como teremos a  entrada de 4 valores foi preferível exemplificar desta forma apenas um símbolo  de entrada e os valores separados por virgula. Em seguida o processamento  novamente nada demais, se esta com duvida sobre o porquê da variável &lt;code&gt;$mensagem&lt;/code&gt; vazia não se preocupe se você não conseguir descobrir um pouco mais a frente  será explicado. Agora o nosso símbolo novo é o &lt;strong&gt;losango&lt;/strong&gt; que é o nosso símbolo de &lt;strong&gt;decisão&lt;/strong&gt;. Observe também a presença das letras &lt;strong&gt;S&lt;/strong&gt; e &lt;strong&gt;N&lt;/strong&gt; representando  respectivamente &lt;strong&gt;sim&lt;/strong&gt; e &lt;strong&gt;não&lt;/strong&gt;. Caso a condição dentro do bloco de  decisão seja &lt;strong&gt;verdadeira&lt;/strong&gt; o que esta  dentro do bloco do &lt;strong&gt;sim&lt;/strong&gt;, S, será  executado, caso seja &lt;strong&gt;falsa&lt;/strong&gt; o que  estiver dentro do bloco do &lt;strong&gt;não&lt;/strong&gt;, N,  será executado. Observe o uso das setas para indicar a direção do  processamento. Ao final novamente um símbolo conhecido o display e para  finalizar o terminal final.&lt;/p&gt;


&lt;h3&gt;No PHP&lt;/h3&gt;


&lt;p&gt;Seguimos a mesma  lógica do código anterior, no entanto observe que criamos a variável $mensagem,  em seguida criamos a nossa estrutura de controle &lt;code&gt;If&lt;/code&gt; com o &lt;a href=&quot;/artigo/operadores-de-comparacao-operadores-logicos-e-a-precedencia-dos-operadores-no-php&quot;&gt;operador de comparação&lt;/a&gt; &lt;code&gt;&amp;gt;=&lt;/code&gt; se esta expressão for &lt;strong&gt;verdadeira&lt;/strong&gt; a variável &lt;code&gt;$mensagem&lt;/code&gt; terá  uma valor dizendo que o aluno foi aprovado. Se a nota for menor que 7 apenas exibe  a nota. Observe o código a seguir:&lt;/p&gt;


&lt;pre class=&quot;brush: php;&quot;&gt;
&amp;lt;?php

/**
 * Entrada das 4 notas do aluno
 */
$nota1 = 10;
$nota2 = 9;
$nota3 = 7;
$nota4 = 5;

/**
 * Obtendo a média do aluno
 */
$resultado = ($nota1 + $nota2 + $nota3 + $nota4) / 4;

/**
 * Crio a mensagem
 */
$mensagem = &#39;&#39;;
if( $resultado &amp;gt;= 7 ){

  $mensagem = &#39; o aluno foi aprovado&#39;;

}

/**
 * Retornando a média
 */
echo $resultado . $mensagem;

?&amp;gt;
&lt;/pre&gt;


&lt;div class=&quot;observacao&quot;&gt;
  &lt;p&gt;Você sabe o porquê de  termos criado a variável &lt;code&gt;$mensagem&lt;/code&gt; com um valor vazio antes do &lt;code&gt;If&lt;/code&gt;? O objetivo  disto é o seguinte, pois independente da nota exibimos a variável &lt;code&gt;$mensagem&lt;/code&gt; no  nosso retorno, e se a nota for menor que 7 não teríamos a variável &lt;code&gt;$mensagem&lt;/code&gt;,  pois ela só seria criada se a média fosse maior ou igual a 7, o que geraria um  erro de notice afinal o PHP estaria tentando exibir uma variável inexistente.  No &lt;a href=&quot;/artigo/instalando-o-apache-o-php-e-o-mysql&quot;&gt;artigo de instalação do PHP&lt;/a&gt; exibimos como manter para seu PHP exibir todos  os erros.&lt;/p&gt;
&lt;/div&gt;


&lt;div class=&quot;dica&quot;&gt;
    &lt;p&gt;Em relação a estrutura  de controle &lt;code&gt;If&lt;/code&gt;:&lt;/p&gt;
    &lt;ul&gt;
        &lt;li&gt;As  expressões são exibidas entre parêntesis logo após a declaração da estrutura&lt;/li&gt;
        &lt;li&gt;Expressões  são realizadas por &lt;a href=&quot;/artigo/operadores-de-comparacao-operadores-logicos-e-a-precedencia-dos-operadores-no-php&quot;&gt;operadores lógicos e operadores de  comparação&lt;/a&gt; &lt;/li&gt;
        &lt;li&gt;O bloco de  código referente a estrutura de controle deve ser delimitado por chaves &lt;code&gt;{}&lt;/code&gt;&lt;/li&gt;
        &lt;li&gt;Endente o  código referente ao bloco em 4 espaços por questões de legibilidade, a como  configurar o seu editor de texto para transformar Tabs em espaços&lt;/li&gt;
    &lt;/ul&gt;
&lt;/div&gt;


&lt;p&gt;Até aqui está legal  nosso programa, se a nota for maior que 7 ele exibe que foi aprovado, no  entanto ainda falta ele exibir também quando o aluno for reprovado, pois até o  momento quando ele é reprovado apenas a nota é exibida, então é neste ponto que  conheceremos outra estrutura de controle o &lt;code&gt;else&lt;/code&gt;.&lt;/p&gt;


&lt;h2&gt;Else o desvio condicional composto no  PHP&lt;/h2&gt;


&lt;p&gt;O else é a estrutura  de controle que é executada quando o &lt;code&gt;If&lt;/code&gt;, ou &lt;code&gt;elseif&lt;/code&gt;, você aprenderá a seguir,  for retornado falso.&lt;/p&gt;


&lt;p&gt;Continuando  o nosso primeiro problema apresentado agora poderemos exibir a média e se foi  aprovado ou reprovado. Lembrando que com apenas o &lt;code&gt;If&lt;/code&gt; conseguíamos exibir apenas  o aprovado.&lt;/p&gt;


&lt;h3&gt;O diagrama de blocos&lt;/h3&gt;


&lt;p&gt;Observe como seria a  representação do nosso problema no diagrama de blocos.&lt;/p&gt;


&lt;p class=&quot;center&quot;&gt;
    &lt;img alt=&quot;Diagrama de blocos do problema apresentado&quot; src=&quot;/img/artigos/if-else-e-elseif-as-estruturas-de-controle-no-php/diagrama-de-blocos-do-problema-de-estruturas-de-controle-no-php-1.jpg&quot; /&gt;
&lt;/p&gt;


&lt;p&gt;Seguimos a mesma  lógica do diagrama anterior. E como foi dito que o else é executado quando o &lt;code&gt;if&lt;/code&gt;  for retornado falso, apenas tivemos que criar um bloco de processamento  seguindo para o bloco da letra &lt;strong&gt;N&lt;/strong&gt; afinal  é o &lt;code&gt;else&lt;/code&gt; e só será executado se a condição for falsa.&lt;/p&gt;


&lt;h3&gt;No PHP&lt;/h3&gt;


&lt;p&gt;Seguimos a mesma  lógica do código anterior, no entanto observe que logo após o fechamento do &lt;code&gt;if&lt;/code&gt; inserimos a nossa nova clausula &lt;code&gt;else&lt;/code&gt;. O que poderia ser lido assim “se  resultado for maior ou igual a 7 o aluno foi aprovado senão o aluno foi reprovado”.  Lembrando que será executado o bloco &lt;code&gt;if&lt;/code&gt; se a expressão, em nosso caso &lt;code&gt;$resultado  &amp;gt;= 7&lt;/code&gt;, for verdadeira &lt;strong&gt;senão&lt;/strong&gt; será  executado o else. Observe o código a seguir:&lt;/p&gt;


&lt;pre class=&quot;brush: php;&quot;&gt;
&amp;lt;?php

/**
 * Entrada das 4 notas do aluno
 */
$nota1 = 10;
$nota2 = 2;
$nota3 = 7;
$nota4 = 5;

/**
 * Obtendo a média do aluno
 */
$resultado = ($nota1 + $nota2 + $nota3 + $nota4) / 4;

/**
 * Crio a mensagem
 */
$mensagem = &#39;&#39;;
if( $resultado &amp;gt;= 7 ){

  $mensagem = &#39; o aluno foi aprovado&#39;;

} else {

  $mensagem = &#39; o aluno foi reprovado&#39;;

}

/**
 * Retornando a média
 */
echo $resultado . $mensagem;

?&amp;gt;
&lt;/pre&gt;


&lt;div class=&quot;observacao&quot;&gt;
  &lt;p&gt;Mantemos a variável  mensagem criada antes por questões de visibilidade e padronização do nosso  código, pois aqui de um jeito ou de outro ela seria criada se fosse maior ou  igual a 7 ou se não fosse menor que 7 devido ao nosso else.&lt;/p&gt;
&lt;/div&gt;


&lt;div class=&quot;dica&quot;&gt;
    &lt;p&gt;Em relação a estrutura  de controle else:&lt;/p&gt;
    &lt;ul&gt;
        &lt;li&gt;&lt;strong&gt;Não&lt;/strong&gt; possui expressões a ser avaliada é executado após um &lt;code&gt;if&lt;/code&gt;, ou &lt;code&gt;elseif&lt;/code&gt;,  você aprenderá a seguir, ter retornado &lt;code&gt;false&lt;/code&gt;(falso)&lt;/li&gt;
        &lt;li&gt;O bloco de  código referente à estrutura de controle deve ser delimitado por chaves &lt;code&gt;{}&lt;/code&gt;&lt;/li&gt;
        &lt;li&gt;Endente o  código referente ao bloco em 4 espaços por questões de legibilidade, a como configurar  o seu editor de texto para transformar Tabs em espaços&lt;/li&gt;
    &lt;/ul&gt;
&lt;/div&gt;


&lt;p&gt;Tudo bem até aqui  finalizamos o nosso problema, apresentado no inicio. No entanto podemos o  incrementar ainda mais para ficar mais legal. E se o aluno tirar 10? Ele foi  aprovado, mais podemos exibir uma mensagem especial igual as que as professoras  de primário exibem. Sendo assim se o aluno tirar 10 exibiremos uma mensagem  especial e para exibir esta mensagem especial utilizaremos da estrutura de controle &lt;code&gt;elseif&lt;/code&gt;.&lt;/p&gt;


&lt;h2&gt;Elseif outro desvio condicional  composto no PHP&lt;/h2&gt;


&lt;p&gt;O &lt;code&gt;elseif&lt;/code&gt; é a estrutura  de controle que será avaliada após o &lt;code&gt;if&lt;/code&gt; retornar falso, o &lt;code&gt;elseif&lt;/code&gt; é inserido  antes do &lt;code&gt;else&lt;/code&gt;, e mais de um &lt;code&gt;elseif&lt;/code&gt; pode ser inserido, lembrando que o &lt;code&gt;elseif&lt;/code&gt; avalia expressões assim como o &lt;code&gt;if&lt;/code&gt;. Ficando assim se um &lt;code&gt;if&lt;/code&gt; retornar falso caíra  no &lt;code&gt;elseif&lt;/code&gt;, se o &lt;code&gt;elseif&lt;/code&gt; retornar falso cairá no próximo &lt;code&gt;elseif&lt;/code&gt; se houver, após  todos os &lt;code&gt;elseif&lt;/code&gt; finaliza á lógica no &lt;code&gt;else&lt;/code&gt;.&lt;/p&gt;


&lt;p&gt;Continuando nossa  lógica da média do aluno, iremos exibir uma mensagem de sucesso quando ele  tirar 10, e uma mensagem para ele estudar mais se tirar 0, pois como foi dito  podemos ter mais de um &lt;code&gt;elseif&lt;/code&gt;, além do que já esta sendo exibido  o aprovado e reprovado.&lt;/p&gt;


&lt;h3&gt;O diagrama de blocos&lt;/h3&gt;


&lt;p&gt;Observe como seria a  representação no diagrama de blocos com a inserção da nossa nova lógica.&lt;/p&gt;


&lt;p class=&quot;center&quot;&gt;
    &lt;img alt=&quot;Diagrama de blocos do problema apresentado&quot; src=&quot;/img/artigos/if-else-e-elseif-as-estruturas-de-controle-no-php/diagrama-de-blocos-do-problema-de-estruturas-de-controle-no-php-2.jpg&quot; /&gt;
&lt;/p&gt;


&lt;p&gt;Observe que  adicionamos mais uma condição no &lt;code&gt;if&lt;/code&gt; agora nosso resultado além de ser maior ou  igual a 7 não pode ser 10, pois o 10 tem uma mensagem especial. Se esta  condição for verdadeira exibe a mensagem de aprovado, até aqui tudo igual. Se a  condição for falsa verificamos se a variável &lt;code&gt;$resultado&lt;/code&gt; é igual a 0 se a  condição for verdadeira retornamos uma mensagem, se for falsa, verificamos  novamente o valor de &lt;code&gt;$resultado&lt;/code&gt; se é igual a 10 se for verdadeira a expressão  retornamos uma mensagem caso contrario caímos no nosso else que diz que o aluno  foi reprovado. Observe que utilizamos o mesmo símbolo de condição, o losango,  para representar o &lt;code&gt;elseif&lt;/code&gt;. E um novo símbolo que é um pequeno circulo, o  conector, foi utilizado para conectar as condições e todas levarem para um  mesmo final.&lt;/p&gt;


&lt;h3&gt;No PHP&lt;/h3&gt;


&lt;p&gt;Mantendo a mesma  lógica do código anterior adicionamos 2 estruturas &lt;code&gt;elseif&lt;/code&gt; antes do &lt;code&gt;else&lt;/code&gt;. Uma  para quando a média do aluno for igual a 0 e outra para quando a média do aluno  for igual a 10, assim retornando mensagens personalizadas para estas médias.  Observe que adicionamos uma nova condição ao &lt;code&gt;if&lt;/code&gt; com o operador lógico  &lt;code&gt;&amp;amp;&amp;amp;&lt;/code&gt; e com o operador de comparação &lt;code&gt;!=&lt;/code&gt; pois aqui dissemos para retornar o  resultado do &lt;code&gt;if&lt;/code&gt; se a nota for maior ou igual a 7 e não igual a 10, afinal 10  tem um tratamento especial. Agora porque não colocamos o operador de negação no  0? Porque o &lt;code&gt;if&lt;/code&gt; só é executado se o &lt;code&gt;$resultado&lt;/code&gt; for maior ou igual a 7 e como o 0  é menor ele não se encaixa no &lt;code&gt;if&lt;/code&gt; e seguiria para o próximo &lt;code&gt;elseif&lt;/code&gt;. Observe o  código a seguir:&lt;/p&gt;


&lt;pre class=&quot;brush: php;&quot;&gt;
&amp;lt;?php

/**
 * Entrada das 4 notas do aluno
 */
$nota1 = 10;
$nota2 = 10;
$nota3 = 10;
$nota4 = 10;

/**
 * Obtendo a média do aluno
 */
$resultado = ($nota1 + $nota2 + $nota3 + $nota4) / 4;

/**
 * Crio a mensagem
 */
$mensagem = &#39;&#39;;
if ( $resultado &amp;gt;= 7 &amp;amp;&amp;amp; $resultado != 10 ) {

  $mensagem = &#39; o aluno foi aprovado.&#39;;

} elseif ( $resultado == 0 ) {

  $mensagem = &#39; estude mais, você não acertou nada.&#39;;

} elseif ( $resultado == 10 ) {

  $mensagem = &#39; parabéns! Aprovado com nota máxima.&#39;;

} else {

  $mensagem = &#39; o aluno foi reprovado.&#39;;

}

/**
 * Retornando a média
 */
echo $resultado . $mensagem;

?&amp;gt;
&lt;/pre&gt;


&lt;div class=&quot;dica&quot;&gt;
    &lt;p&gt;Em relação a estrutura  de controle &lt;code&gt;elseif&lt;/code&gt;:&lt;/p&gt;
    &lt;ul&gt;
        &lt;li&gt;O &lt;code&gt;elseif&lt;/code&gt;  será avaliada após o &lt;code&gt;if&lt;/code&gt; retornar falso&lt;/li&gt;
        &lt;li&gt;É inserido  depois do &lt;code&gt;if&lt;/code&gt; e antes do &lt;code&gt;else&lt;/code&gt;&lt;/li&gt;
        &lt;li&gt;Podemos  ter vários &lt;code&gt;elseif&lt;/code&gt; antes do &lt;code&gt;else&lt;/code&gt;&lt;/li&gt;
        &lt;li&gt;Aceita  expressões&lt;/li&gt;
        &lt;li&gt;As  expressões são exibidas entre parêntesis logo após a declaração da estrutura&lt;/li&gt;
        &lt;li&gt;Expressões  são realizadas por &lt;a href=&quot;/artigo/operadores-de-comparacao-operadores-logicos-e-a-precedencia-dos-operadores-no-php&quot;&gt;operadores lógicos e operadores de  comparação&lt;/a&gt; &lt;/li&gt;
        &lt;li&gt;O bloco de  código referente à estrutura de controle deve ser delimitado por chaves &lt;code&gt;{}&lt;/code&gt;&lt;/li&gt;
        &lt;li&gt;Endente o  código referente ao bloco em 4 espaços por questões de legibilidade, a como  configurar o seu editor de texto para transformar Tabs em espaços&lt;/li&gt;
    &lt;/ul&gt;
&lt;/div&gt;


&lt;div class=&quot;destaque&quot;&gt;
&lt;p&gt;Ainda temos mais  estruturas de controle no PHP, sendo assim no próximo artigo voltaremos a elas. Enquanto isso experimente, com as estruturas de controle que aprendeu tente  resolver pequenos problemas.  Por exemplo  entre com 3 valores um operador, a e b e de acordo com o operador o programa  tem que executar uma operação matemática(soma, subtração, multiplicação e  divisão) utilizando as estruturas de controle aprendidas aqui e os &lt;a href=&quot;/artigo/operadores-no-php&quot;&gt;operadores do PHP&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;

</content>
 </entry>
 
 <entry>
   <id>http://aprenderphp.com.br/artigo/operadores-de-comparacao-operadores-logicos-e-a-precedencia-dos-operadores-no-php</id>
   <title>Operadores de comparação, operadores lógicos e a precedência dos operadores  no PHP</title>
   <link type="text/html" href="http://aprenderphp.com.br/artigo/operadores-de-comparacao-operadores-logicos-e-a-precedencia-dos-operadores-no-php"/>
   <updated>2010-04-09T00:00:00-07:00</updated>
   <content type="html">&lt;p&gt;Como foi dito no artigo de &lt;a href=&quot;/artigo/operadores-no-php&quot;&gt;operadores no PHP&lt;/a&gt; quando chegássemos a  estruturas de controle no PHP voltaríamos a abordar alguns novos operadores,  pois são diretamente ligados as estruturas de controle. Então primeiro veremos  dois novos operadores e em seguida entraremos nas estruturas de controle.&lt;/p&gt;


&lt;h2&gt;Operadores de comparação&lt;/h2&gt;


&lt;p&gt;Operadores de  comparação como o próprio nome já diz compara dois valores retornando  verdadeiro (&lt;code&gt;TRUE&lt;/code&gt;) ou falso (&lt;code&gt;FALSE&lt;/code&gt;).&lt;/p&gt;


&lt;p&gt;Veja uma tabela com  os operadores de comparação.&lt;/p&gt;


&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;Operador&lt;/th&gt;
      &lt;th&gt;Nome&lt;/th&gt;
            &lt;th&gt;Exemplo&lt;/th&gt;
      &lt;th&gt;Resultado&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code&gt;==&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;Igual&lt;/td&gt;
      &lt;td&gt;&lt;code&gt;$a == $b&lt;/code&gt;&lt;/td&gt;
            &lt;td&gt;Verdadeiro se &lt;code&gt;$a&lt;/code&gt; for igual a &lt;code&gt;$b&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr&gt;
      &lt;td&gt;&lt;code&gt;!=&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;Diferente&lt;/td&gt;
      &lt;td&gt;&lt;code&gt;$a != $b&lt;/code&gt;&lt;/td&gt;
            &lt;td&gt;Verdadeiro se &lt;code&gt;$a&lt;/code&gt; &lt;strong&gt;não&lt;/strong&gt; for igual a &lt;code&gt;$b&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr&gt;
      &lt;td&gt;&lt;code&gt;&amp;lt;&amp;gt;&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;Diferente&lt;/td&gt;
      &lt;td&gt;&lt;code&gt;$a &amp;lt;&amp;gt; $b&lt;/code&gt;&lt;/td&gt;
            &lt;td&gt;Verdadeiro se &lt;code&gt;$a&lt;/code&gt; &lt;strong&gt;não&lt;/strong&gt; for igual a &lt;code&gt;$b&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr&gt;
      &lt;td&gt;&lt;code&gt;===&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;Idêntico&lt;/td&gt;
      &lt;td&gt;&lt;code&gt;$a === $b&lt;/code&gt;&lt;/td&gt;
            &lt;td&gt;Verdadeiro se &lt;code&gt;$a&lt;/code&gt; for igual a &lt;code&gt;$b&lt;/code&gt; e for do mesmo &lt;a href=&quot;/artigo/tipos-de-dados-no-php&quot;&gt;&lt;strong&gt;tipo&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr&gt;
      &lt;td&gt;&lt;code&gt;!==&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;Não idêntico&lt;/td&gt;
      &lt;td&gt;&lt;code&gt;$a !== $b&lt;/code&gt;&lt;/td&gt;
            &lt;td&gt;Verdadeiro se &lt;code&gt;$a&lt;/code&gt; &lt;strong&gt;não&lt;/strong&gt; for igual a &lt;code&gt;$b&lt;/code&gt;, ou eles  não são do mesmo &lt;a href=&quot;/artigo/tipos-de-dados-no-php&quot;&gt;&lt;strong&gt;tipo&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr&gt;
      &lt;td&gt;&lt;code&gt;&amp;lt;&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;Menor que&lt;/td&gt;
      &lt;td&gt;&lt;code&gt;$a &amp;lt; $b&lt;/code&gt;&lt;/td&gt;
            &lt;td&gt;Verdadeiro se &lt;code&gt;$a&lt;/code&gt; for menor que &lt;code&gt;$b&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr&gt;
      &lt;td&gt;&lt;code&gt;&amp;gt;&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;Maior que&lt;/td&gt;
      &lt;td&gt;&lt;code&gt;$a &amp;gt; $b&lt;/code&gt;&lt;/td&gt;
            &lt;td&gt;Verdadeiro se &lt;code&gt;$a&lt;/code&gt; for maior que &lt;code&gt;$b&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr&gt;
      &lt;td&gt;&lt;code&gt;&amp;lt;=&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;Menor ou igual&lt;/td&gt;
      &lt;td&gt;&lt;code&gt;$a &amp;lt;= $b&lt;/code&gt;&lt;/td&gt;
            &lt;td&gt;Verdadeiro se &lt;code&gt;$a&lt;/code&gt; for menor ou igual a &lt;code&gt;$b&lt;/code&gt;.&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr&gt;
      &lt;td&gt;&lt;code&gt;&amp;gt;=&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;Maior ou igual&lt;/td&gt;
      &lt;td&gt;&lt;code&gt;$a &amp;gt;= $b&lt;/code&gt;&lt;/td&gt;
            &lt;td&gt;Verdadeiro se &lt;code&gt;$a&lt;/code&gt; for maior ou igual a &lt;code&gt;$b&lt;/code&gt;.&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;


&lt;p&gt;Veja um exemplo com  cada um dos operadores, utilizaremos a função &lt;code&gt;var_dump()&lt;/code&gt;, para retornar o  resultado.&lt;/p&gt;


&lt;pre class=&quot;brush: php;&quot;&gt;
&amp;lt;?php
/**
 * Igual
 */
var_dump( 7 == 7 ); // TRUE, são iguais

var_dump( 7 == 6 ); // FALSE, são diferentes

/**
 * Diferente
 */
var_dump( 7 != 7 ); // FALSE, pois não são diferentes

var_dump( 7 != 6 ); // TRUE, pois são diferentes

// Segundo operador diferente
var_dump( 7 &amp;lt;&amp;gt; 7 ); // FALSE, pois não são diferentes

var_dump( 7 &amp;lt;&amp;gt; 6 ); // TRUE, pois são diferentes

/**
 * Idêntico
 */
var_dump( 7 === 7 ); // TRUE, pois são iguais e do mesmo tipo, inteiros

var_dump( 7 === 7.0 ); // FALSE, pois não são do mesmo tipo

/**
 * Não idêntico
 */
var_dump( 7 !== 7 ); // FALSE, pois são iguais e do mesmo tipo, inteiros

var_dump( 7 !== 7.0 ); // TRUE, pois não são do mesmo tipo

/**
 * Menor que
 */
var_dump( 7 &amp;lt; 8 ); // TRUE, 7 é menor que 8

var_dump( 7 &amp;lt; 6 ); // FALSE, 7 não é menor que 6

/**
 * Maior que
 */
var_dump( 7 &amp;gt; 6 ); // TRUE, 7 é maior que 6

var_dump( 7 &amp;gt; 8 ); // FALSE, 7 não é maior que 8

/**
 * Menor ou igual
 */
var_dump( 7 &amp;lt;= 7 ); // TRUE, 7 é igual a 7

var_dump( 7 &amp;lt;= 6 ); // FALSE, 7 não é menor nem igual a 6

var_dump( 3 &amp;lt;= 7 ); // TRUE, 3 é menor que 7

/**
 * Maior ou igual
 */
var_dump( 7 &amp;gt;= 7 ); // TRUE, 7 é igual a 7

var_dump( 7 &amp;gt;= 8 ); // FALSE, 7 não é maior nem igual a 8

var_dump( 10 &amp;gt;= 7 ); // TRUE, 10 é maior que 7

?&amp;gt;
&lt;/pre&gt;


&lt;p&gt;Observe que não  definimos variáveis por questões didáticas comparamos valores diretos mais não  se esqueça que você pode comparar variável com variável e variável com valores  fixos ou ainda como fizemos para exemplificar apenas os valores, resumindo  qualquer tipo de dado pode ser comparado. E como foi dito anteriormente o  resultado sempre será verdadeiro ou falso, neste ponto pode parecer inútil mais  daqui a pouco fará mais sentido o retorno destes resultados. E não se esqueça que as &lt;a href=&quot;/artigo/conversao-de-tipos-de-dados-no-php&quot;&gt;conversões de dados&lt;/a&gt; são válidas aqui os valores são convertidos  automaticamente quando comparados.&lt;/p&gt;


&lt;h2&gt;Operadores lógicos&lt;/h2&gt;


&lt;p&gt;Os operadores  lógicos realizam comparação entre expressões, exceto o &lt;code&gt;!&lt;/code&gt; que compara apenas um  valor,  e como os operadores de  comparação retornam verdadeiro (&lt;code&gt;TRUE&lt;/code&gt;) ou falso (&lt;code&gt;FALSE&lt;/code&gt;).&lt;/p&gt;


&lt;p&gt;Observe a tabela  com os operadores lógicos.&lt;/p&gt;


&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;Operador&lt;/th&gt;
      &lt;th&gt;Nome&lt;/th&gt;
            &lt;th&gt;Exemplo&lt;/th&gt;
            &lt;th&gt;Resultado&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code&gt;AND&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;E&lt;/td&gt;
      &lt;td&gt;&lt;code&gt;( 10 &amp;gt; 7 ) AND ( 9 == 9 )&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;Verdadeiro se 10 for maior que 7 &lt;strong&gt;e&lt;/strong&gt; 9 for igual a 9&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr&gt;
      &lt;td&gt;&lt;code&gt;OR&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;Ou&lt;/td&gt;
      &lt;td&gt;&lt;code&gt;( 10 &amp;gt; 7 ) OR ( 9 == 9 )&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;Verdadeiro se 10 for maior que 7 &lt;strong&gt;ou&lt;/strong&gt; 9 for igual a 9&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr&gt;
      &lt;td&gt;&lt;code&gt;XOR&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;Ou exclusivo&lt;/td&gt;
      &lt;td&gt;&lt;code&gt;( 10 &amp;gt; 7 ) XOR ( 9 == 9 )&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;Verdadeiro se 10 for maior que 7 &lt;strong&gt;ou&lt;/strong&gt; 9 for igual a 9, mais não se ambos forem verdadeiro&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr&gt;
      &lt;td&gt;&lt;code&gt;!&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;Negação&lt;/td&gt;
      &lt;td&gt;&lt;code&gt;! ( 10 &amp;gt; 7 )&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;Verdadeiro se 10 for menor que 7&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr&gt;
      &lt;td&gt;&lt;code&gt;&amp;amp;&amp;amp;&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;E&lt;/td&gt;
      &lt;td&gt;&lt;code&gt;( 10 &amp;gt; 7 ) &amp;amp;&amp;amp; ( 9 == 9 )&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;Verdadeiro se 10 for maior que 7 &lt;strong&gt;e&lt;/strong&gt; 9 for igual a 9  &lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr&gt;
      &lt;td&gt;&lt;code&gt;||&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;Ou&lt;/td&gt;
      &lt;td&gt;&lt;code&gt;( 10 &amp;gt; 7 ) || ( 9 == 9 )&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;Verdadeiro se 10 for maior que 7 &lt;strong&gt;ou&lt;/strong&gt; 9 for igual a 9&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;


&lt;p&gt;Veja um exemplo com  cada um dos operadores, e como nos operadores de comparação utilizaremos a  função &lt;code&gt;var_dump()&lt;/code&gt;, para retornar o resultado.&lt;/p&gt;


&lt;pre class=&quot;brush: php;&quot;&gt;
&amp;lt;?php
/**
 * AND
 */
var_dump(  7 == 7  AND 9 &amp;gt; 7  ); // TRUE, ambas as expressões são verdadeiras

var_dump(  7 == 7  AND 9 &amp;lt; 7  ); // FALSE, apenas a primeira expressão é verdadeira

/**
 *  OR
 */
var_dump(  7 == 7  OR 9 &amp;gt; 7  ); // TRUE, ambas as expressões são verdadeiras

var_dump(  7 != 7  OR 9 &amp;gt; 7  ); // TRUE, a segunda expressão é verdadeira

var_dump(  7 != 7  OR 9 &amp;lt; 7  ); // FALSE, ambas as expressões são falsas

/**
 * XOR
 */
var_dump(  7 == 7  XOR 9 &amp;gt; 7  ); // FALSE, ambas as expressões são verdadeiras

var_dump(  7 == 7  XOR 9 &amp;lt; 7  ); // TRUE, a primeira expressão é verdadeira

var_dump(  7 &amp;lt; 7  XOR 9 &amp;gt; 7  ); // TRUE, a segunda expressão é verdadeira

/**
 * !
 */
var_dump(  ! 9 &amp;lt; 7  ); // TRUE, 9 NÃO é menor que 7

var_dump(  ! 9 &amp;gt; 7  ); // FALSE, 9 é maior que 7

/**
 * &amp;amp;&amp;amp;
 */
var_dump(  7 == 7  &amp;amp;&amp;amp; 9 &amp;gt; 7  ); // TRUE, ambas as expressões são verdadeiras

var_dump(  7 == 7  &amp;amp;&amp;amp; 9 &amp;lt; 7  ); // FALSE, apenas a primeira expressão é verdadeira

/**
 *  ||
 */
var_dump(  7 == 7  || 9 &amp;gt; 7  ); // TRUE, ambas as expressões são verdadeiras

var_dump(  7 != 7  || 9 &amp;gt; 7  ); // TRUE, a segunda expressão é verdadeira

var_dump(  7 != 7  || 9 &amp;lt; 7  ); // FALSE, ambas as expressões são falsas

?&amp;gt;
&lt;/pre&gt;


&lt;p&gt;Novamente não  utilizamos variáveis por questões didáticas, as mesmas regras dos tipos de  dados em operadores de comparação são validas aqui. Experimente agora que já  sabe utilizar variáveis, ao invés de valores como inserirmos experimente substituir por variáveis.&lt;/p&gt;


&lt;h2&gt;Precedência de operadores no PHP&lt;/h2&gt;


&lt;p&gt;Agora você já  conhece uma boa quantidade de &lt;a href=&quot;/artigo/operadores-no-php&quot;&gt;operadores no PHP&lt;/a&gt; temos que conhecer a precedência, ou seja,  quem é mais importante qual operador é avaliado primeiro e qual é avaliado em  seguida. Observe o seguinte exemplo:&lt;/p&gt;


&lt;pre class=&quot;brush: php;&quot;&gt;
&amp;lt;?php

echo 5 + 2 * 3;

?&amp;gt;
&lt;/pre&gt;


&lt;p&gt;O resultado será &lt;strong&gt;11&lt;/strong&gt;, pois o operador &lt;code&gt;*&lt;/code&gt; tem maior  precedência em relação ao operador &lt;code&gt;+&lt;/code&gt;. Caso desejar realizar a operação com o operador &lt;code&gt;+&lt;/code&gt; para só em seguida realizar a operação com o operador &lt;code&gt;*&lt;/code&gt;. Observe o  exemplo:&lt;/p&gt;


&lt;pre class=&quot;brush: php;&quot;&gt;
&amp;lt;?php

echo (5 + 2) * 3;

?&amp;gt;
&lt;/pre&gt;


&lt;p&gt;Observe que  utilizamos os parênteses para determinarmos quem deve ser executado primeiro,  assim alterando o resultado para &lt;strong&gt;21&lt;/strong&gt;.&lt;/p&gt;


&lt;p&gt;A tabela seguinte mostra a precedência dos  operadores, da maior precedência no começo para os de menor precedência.&lt;/p&gt;


&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;Operador&lt;/th&gt;
      &lt;th&gt;Descrição&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code&gt;- ! ++ --&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;Negativo, negação, incremento e decremento&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr&gt;
      &lt;td&gt;&lt;code&gt;* / %&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;Multiplicação, divisão e resto da divisão&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr&gt;
      &lt;td&gt;&lt;code&gt;+ - .&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;Adição, subtração e concatenação&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr&gt;
      &lt;td&gt;&lt;code&gt;&amp;gt;  &amp;lt;  &amp;gt;= &amp;lt;=&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;Maior que, menor que, maior ou igual e menor ou igual&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr&gt;
      &lt;td&gt;&lt;code&gt;== != &amp;lt;&amp;gt;&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;Igual e diferente&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr&gt;
      &lt;td&gt;&lt;code&gt;&amp;amp;&amp;amp;&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;E&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr&gt;
      &lt;td&gt;&lt;code&gt;||&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;Ou&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr&gt;
      &lt;td&gt;&lt;code&gt;= += -= *= /= %=&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;Operadores de atribuição&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr&gt;
      &lt;td&gt;&lt;code&gt;AND&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;E com menor prioridade&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr&gt;
      &lt;td&gt;&lt;code&gt;XOR&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;Ou exclusivo&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr&gt;
      &lt;td&gt;&lt;code&gt;OR&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;Ou com menor prioridade&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;


&lt;p&gt;É importante lembrar que primeiro o PHP executará todas as  operações que estiverem entre parênteses, se dentro dos parênteses houver  diversas operações a precedência dos operadores será utilizada para definir a  ordem, após resolver todas as operações dos parentes, o PHP volta a resolver o  que esta fora dos parênteses baseando-se na tabela de precedência de  operadores, havendo operadores de mesma prioridade o PHP resolverá a operação  da esquerda para direita. Uma tabela mais completa, pois aqui exibimos apenas  dos operadores que aprendemos, pode ser encontrada diretamente no &lt;a href=&quot;http://www.php.net/manual/pt_BR/language.operators.precedence.php&quot;&gt;manual do PHP&lt;/a&gt;.&lt;/p&gt;


&lt;div class=&quot;destaque&quot;&gt;
  &lt;p&gt;Abordamos os operadores de comparação e lógicos além da precedência dos operadores neste artigo, no artigo seguinte sobre estruturas de controle serão bastante utilizados os temas abordados neste artigo por isso sempre que houver necessidade volte para tirar duvida sobre algo.&lt;/p&gt;
&lt;/div&gt;

</content>
 </entry>
 
 <entry>
   <id>http://aprenderphp.com.br/artigo/o-algoritmo-o-diagrama-de-blocos-e-o-php</id>
   <title>O Algoritmo, o diagrama de blocos e o PHP</title>
   <link type="text/html" href="http://aprenderphp.com.br/artigo/o-algoritmo-o-diagrama-de-blocos-e-o-php"/>
   <updated>2010-04-05T00:00:00-07:00</updated>
   <content type="html">&lt;h2&gt;Algoritmo&lt;/h2&gt;


&lt;p&gt;O &lt;a href=&quot;http://pt.wikipedia.org/wiki/Algoritmo&quot;&gt;algoritmo&lt;/a&gt; é um processo de resolução de problemas bem definido e sem ambigüidade. É a  lógica em que aplicamos para resolvermos nossos problemas.&lt;/p&gt;


&lt;h2&gt;Entrada, processamento e saída de dados&lt;/h2&gt;


&lt;p&gt;Para se fazer um programa é preciso ter em mente três  pontos: a &lt;strong&gt;entrada&lt;/strong&gt;, o &lt;strong&gt;processamento&lt;/strong&gt; e a &lt;strong&gt;saída de dados&lt;/strong&gt;. Temos que saber também se um dado for inserido  errado resultará em erro.&lt;/p&gt;


&lt;h3&gt;Entrada de dados&lt;/h3&gt;


&lt;p&gt;Em nossos estudos trabalharemos em que a entrada de dados  será as variáveis iniciais que definirmos em nosso script. Pois podemos ter  entrada de dados de diferentes fontes como modem, leitor ótico, cd etc.&lt;/p&gt;


&lt;h3&gt;Processamento de dados&lt;/h3&gt;


&lt;p&gt;Será onde ocorrerá à lógica, o processamento, que retornará  a saída de dados.&lt;/p&gt;


&lt;h3&gt;Saída de dados&lt;/h3&gt;


&lt;p&gt;Nossa saída de dados será o nosso próprio monitor, pois a  saída de dados pode ser uma impressora, disco etc.&lt;/p&gt;


&lt;h2&gt;Diagrama de blocos&lt;/h2&gt;


&lt;p&gt;É a ferramenta que o profissional possui que tem  como objetivo descrever o processo, o mesmo citado anteriormente &lt;strong&gt;entrada, processamento e saída de dados.&lt;/strong&gt; O  diagrama de blocos pode ser desenvolvido em qualquer nível de detalhamento. O  diagrama de blocos utiliza-se de várias formas geométricas para representarmos  as seqüências a serem efetuadas. Observe a imagem a seguir seria a  representação em diagrama de blocos dos processos básicos a entrada,  processamento e saída de dados.&lt;/p&gt;


&lt;p class=&quot;center&quot;&gt;
    &lt;img src=&quot;/img/artigos/o-algoritmo-o-diagrama-de-blocos-e-o-php/exemplo-basico-de-diagrama-de-blocos.jpg&quot; alt=&quot;Exemplo básico de diagrama de blocos&quot; /&gt;
&lt;/p&gt;


&lt;p&gt;O primeiro e o ultimo símbolo é o &lt;strong&gt;terminal&lt;/strong&gt; representando respectivamente o inicio e o fim da  aplicação. Este símbolo tem que estar sempre presente representando o início e  o fim do diagrama de blocos. A &lt;strong&gt;seta &lt;/strong&gt;indica  a direção em que o processamento do programa deve seguir. O símbolo seguido do  inicio representa o &lt;strong&gt;teclado&lt;/strong&gt;, a  entrada de dados, o seguinte representa o &lt;strong&gt;processamento  de dados&lt;/strong&gt; e o ultimo antes do terminal final representa o &lt;strong&gt;display&lt;/strong&gt;, a saída de dados.&lt;/p&gt;


&lt;div class=&quot;dica&quot;&gt;
    &lt;ul&gt;
        &lt;li&gt;Para o desenvolvimento correto do diagrama de  blocos o mesmo sempre deve ser feito de &lt;strong&gt;cima&lt;/strong&gt; para &lt;strong&gt;baixo&lt;/strong&gt; e da &lt;strong&gt;esquerda&lt;/strong&gt; para &lt;strong&gt;direita&lt;/strong&gt;.&lt;/li&gt;
        &lt;li&gt;Como um bom exercício primeiro desenvolva o  problema no diagrama de blocos para posteriormente transcrevê-lo para a  linguagem de programação, no nosso caso o PHP.&lt;/li&gt;
    &lt;/ul&gt;
&lt;/div&gt;


&lt;div class=&quot;observacao&quot;&gt;
  &lt;p&gt;Não entraremos em muitos detalhes sobre os diagramas de blocos, pois nem todos os símbolos serão utilizados à medida que formos avançando introduziremos novos símbolos.&lt;/p&gt;
&lt;/div&gt;


&lt;h2&gt;Exemplo em PHP e com a representação no diagrama de blocos&lt;/h2&gt;


&lt;p&gt;Como foi dito anteriormente primeiro devemos desenvolver o  problema no diagrama de blocos para posteriormente desenvolvermos no próprio PHP. Então vamos primeiro ao problema, ou seja, o que nosso algoritmo terá que  resolver.&lt;/p&gt;


&lt;h3&gt;Problema&lt;/h3&gt;


&lt;ol&gt;
    &lt;li&gt;Ler dois valores, no caso às variáveis &lt;code&gt;$a&lt;/code&gt; e &lt;code&gt;$b&lt;/code&gt;&lt;/li&gt;
    &lt;li&gt;Realizar a soma das variáveis &lt;code&gt;$a&lt;/code&gt; e &lt;code&gt;$b&lt;/code&gt; e atribuir  o resultado a variável &lt;code&gt;$resultado&lt;/code&gt;&lt;/li&gt;
    &lt;li&gt;Exibir o valor da variável &lt;code&gt;$resultado&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;


&lt;h3&gt;Diagrama de blocos&lt;/h3&gt;


&lt;p&gt;Observe como ficaria a representação no diagrama  de blocos do problema apresentado anteriormente.&lt;/p&gt;


&lt;p class=&quot;center&quot;&gt;
    &lt;img src=&quot;/img/artigos/o-algoritmo-o-diagrama-de-blocos-e-o-php/diagrama-de-blocos-do-problema-apresentado.jpg&quot; alt=&quot;Diagrama de blocos do problema apresentado&quot; /&gt;
&lt;/p&gt;


&lt;p&gt;Primeiro iniciamos o diagrama de blocos com o &lt;strong&gt;terminal&lt;/strong&gt; para representarmos o inicio  do código. Em seguida inserimos dois símbolos que representam a &lt;strong&gt;entrada de dados&lt;/strong&gt;, pelo fato de nosso  programa necessitar de dois valores &lt;code&gt;$a&lt;/code&gt; e &lt;code&gt;$b&lt;/code&gt;. No bloco de &lt;strong&gt;processamento&lt;/strong&gt; definimos que a variável &lt;code&gt;$resultado&lt;/code&gt; terá o valor da  soma de &lt;code&gt;$a&lt;/code&gt; com &lt;code&gt;$b&lt;/code&gt;. Em seguida temos o display que representa a &lt;strong&gt;saída de dados&lt;/strong&gt; que exibirá para nos a  variável &lt;code&gt;$resultado&lt;/code&gt;. E por ultimo inserimos o terminal de fim.&lt;/p&gt;


&lt;h3&gt;PHP&lt;/h3&gt;


&lt;p&gt;Observe como ficaria a representação em PHP do diagrama de  blocos do problema apresentado anteriormente.&lt;/p&gt;


&lt;pre class=&quot;brush: php;&quot;&gt;
&amp;lt;?php

// Entrada de dado $a
$a = 10;

// Entrada de dado $b
$b = 7;

/**
 *  Processamento, somamos $a com $b
 *  e atribuimos o valor a $resultado
 */
$resultado = $a + $b;

// Saida de dados, o display
echo $resultado;

?&amp;gt;
&lt;/pre&gt;


&lt;p&gt;No código anterior da transcrição do diagrama de blocos para  o PHP. Iniciamos primeiramente criando as duas variáveis que serão à &lt;strong&gt;entrada de dados&lt;/strong&gt; &lt;code&gt;$a&lt;/code&gt; e &lt;code&gt;$b&lt;/code&gt;. Em seguida  criamos a variável &lt;code&gt;$resultado&lt;/code&gt; que tem em seu valor o resultado da soma de &lt;code&gt;$a&lt;/code&gt; com &lt;code&gt;$b&lt;/code&gt;, que seria o &lt;strong&gt;processamento&lt;/strong&gt;.E por ultimo exibimos o resultado em  tela que seria a variável &lt;code&gt;$resultado&lt;/code&gt; este sendo a nossa &lt;strong&gt;saída de dados&lt;/strong&gt;.&lt;/p&gt;


&lt;p&gt;Como você pode observar fizemos um exemplo muito simples,  pois a idéia é apenas você se acostumar com os símbolos apresentados no  diagrama de blocos e como representar o mesmo no PHP.&lt;/p&gt;


&lt;div class=&quot;observacao&quot;&gt;
  &lt;p&gt;Realizamos a entrada de dados direto no nosso arquivo PHP por questões didáticas, no entanto esta entrada poderia vir de um formulário presente em seu sistema e processado e exibido neste nosso arquivo. No entanto trabalharemos no momento com a entrada de dados direto no nosso arquivo, posteriormente será abordada a entrada de dados por formulários.&lt;/p&gt;
&lt;/div&gt;


&lt;div class=&quot;dica&quot;&gt;
  &lt;ul&gt;
        &lt;li&gt;Experimente! Sinta-se livre para experimentar  com números diferentes, alterar o processamento para outra operação como a  multiplicação.&lt;/li&gt;
        &lt;li&gt; Faça um  exercício crie um programa como o anterior para cada uma das operações  matemáticas que você aprendeu em &lt;a href=&quot;/artigo/operadores-no-php&quot;&gt;Operadores  aritméticos no PHP&lt;/a&gt;.&lt;/li&gt;
    &lt;/ul&gt;
&lt;/div&gt;

</content>
 </entry>
 
 <entry>
   <id>http://aprenderphp.com.br/artigo/conversao-de-tipos-de-dados-no-php</id>
   <title>Conversão de tipos de dados no PHP</title>
   <link type="text/html" href="http://aprenderphp.com.br/artigo/conversao-de-tipos-de-dados-no-php"/>
   <updated>2010-03-26T00:00:00-07:00</updated>
   <content type="html">&lt;p&gt;No PHP é possível &lt;a href=&quot;http://www.php.net/manual/pt_BR/language.types.type-juggling.php#language.types.typecasting&quot;&gt;converter  a variável de um tipo para outro&lt;/a&gt;. Para isso devemos utilizar os conversores  de tipos, para fazer a conversão devemos utilizar o tipo pra qual devemos  converter entre parênteses antes do nome da variável em que se deseja  converter. No PHP possuímos os seguintes conversores:&lt;/p&gt;


&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;Conversor&lt;/th&gt;
      &lt;th&gt;Função&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code&gt;(int)&lt;/code&gt;, &lt;code&gt;(integer)&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;converte para inteiro&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr&gt;
      &lt;td&gt;&lt;code&gt;(bool)&lt;/code&gt;, &lt;code&gt;(boolean)&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;converte para booleano&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr&gt;
      &lt;td&gt;&lt;code&gt;(float)&lt;/code&gt;, &lt;code&gt;(double)&lt;/code&gt;, &lt;code&gt;(real)&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;converte para float&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr&gt;
      &lt;td&gt;&lt;code&gt;(string)&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;converte para string&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr&gt;
      &lt;td&gt;&lt;code&gt;(array)&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;converte para array&lt;/td&gt;
    &lt;/tr&gt;
        &lt;tr&gt;
      &lt;td&gt;&lt;code&gt;(object)&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;converte para objeto&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;


&lt;h2&gt;Conversão de dados para inteiros no PHP&lt;/h2&gt;


&lt;p&gt;Para converter um valor para inteiro como foi visto anteriormente basta utilizarmos um dos conversores de inteiro antes do valor.  Observe o exemplo:&lt;/p&gt;


&lt;h3&gt;Conversão de float em inteiro&lt;/h3&gt;


&lt;p&gt;Quando convertemos um número de float, ponto flutuante, para inteiro ele sempre terá o seu valor truncado, ou seja, arredondado para baixo.  Observe:&lt;/p&gt;


&lt;pre class=&quot;brush: php;&quot;&gt;
&amp;lt;?php

$float = (int) 10.9;

var_dump( $float );

echo &#39;&amp;lt;br /&amp;gt;&#39; . PHP_EOL;

$float2 = (int) 10.1;

var_dump( $float2 );

?&amp;gt;
&lt;/pre&gt;


&lt;p&gt;Como você pode observar ambos os valores 10.9 e 10.1 foram convertidos para 10.&lt;/p&gt;


&lt;div class=&quot;dica&quot;&gt;
  &lt;p&gt;A função &lt;code&gt;var_dump()&lt;/code&gt; utilizada anteriormente além de exibir o valor da variável mostrará também o tipo da variável como você verá ao testar os exemplos, como estamos trabalhando com tipos de dados é ideal sabermos se o valor foi convertido ou não. &lt;/p&gt;
&lt;/div&gt;


&lt;h3&gt;Conversão de string em inteiro&lt;/h3&gt;


&lt;p&gt;A conversão de string para inteiro depende do formato da  string, assim o PHP avalia o formato da string caso &lt;strong&gt;não&lt;/strong&gt; possua nenhum valor numérico será convertido para 0(zero). Caso  possua &lt;strong&gt;valor numérico em sua primeira  posição&lt;/strong&gt; o valor será considerado caso o valor não seja na primeira posição será desconsiderado. Veja o exemplo:&lt;/p&gt;


&lt;pre class=&quot;brush: php;&quot;&gt;
&amp;lt;?php

$string = (int) &#39;Muitas casas&#39;;

var_dump( $string ); // int(0)

echo &#39;&amp;lt;br /&amp;gt;&#39; . PHP_EOL;

$string2 = (int) &#39;10 casas aproximadamente&#39;;

var_dump( $string2 ); // int(10)

echo &#39;&amp;lt;br /&amp;gt;&#39; . PHP_EOL;

$string3 = (int) &#39;Exatamente 10 casas&#39;;

var_dump( $string3 ); // int(0)

?&amp;gt;
&lt;/pre&gt;


&lt;h3&gt;Conversão de booleano em inteiro&lt;/h3&gt;


&lt;p&gt;A conversão de booleano para string segue uma regra simples em que o valor &lt;code&gt;TRUE&lt;/code&gt; é definido como 1(um) e o valor &lt;code&gt;FALSE&lt;/code&gt; é definido como  0(zero). Observe:&lt;/p&gt;


&lt;pre class=&quot;brush: php;&quot;&gt;
&amp;lt;?php

$bool = (int) TRUE;

var_dump( $bool );

echo &#39;&amp;lt;br /&amp;gt;&#39; . PHP_EOL;

$bool2 = (int) FALSE;

var_dump( $bool2 );

?&amp;gt;
&lt;/pre&gt;


&lt;h2&gt;Conversão de dados para float no PHP&lt;/h2&gt;


&lt;p&gt;A conversão para float como pode ser observado anteriormente na tabela é feita pelos conversores &lt;code&gt;(float)&lt;/code&gt;, &lt;code&gt;(double)&lt;/code&gt; ou  &lt;code&gt;(real)&lt;/code&gt;. As regras de conversão para float &lt;strong&gt;seguem  as mesmas que você acabou de ver na conversão de dados para inteiros&lt;/strong&gt;.  Exceto na conversão para strings.&lt;/p&gt;


&lt;h3&gt;Conversão de string em float&lt;/h3&gt;


&lt;p&gt;Na conversão para float a string  será avaliada como um ponto flutuante se conter  qualquer um dos caracteres &#39;&lt;code&gt;.&lt;/code&gt;&#39;, &#39;&lt;code&gt;e&lt;/code&gt;&#39;, ou &#39;&lt;code&gt;E&lt;/code&gt;&#39;, lembrando que a string deve ser  iniciada com um número. Caso contrário será convertido para 0(Zero), lembrando  que este zero será um float devido a conversão. Observe:&lt;/p&gt;


&lt;pre class=&quot;brush: php;&quot;&gt;
&amp;lt;?php

$string = (float) &#39;1.75cm&#39;;

var_dump( $string ); // float(1.75)

echo &#39;&amp;lt;br /&amp;gt;&#39; . PHP_EOL;

$string2 = (float) &#39;Ele possuia 1.75cm&#39;;

var_dump( $string2 ); // float(0)

?&amp;gt;
&lt;/pre&gt;


&lt;h2&gt;Conversão de dados para strings no PHP&lt;/h2&gt;


&lt;p&gt;Para converter um dado para string você já deve estar  imaginando que basta utilizar o conversor &lt;code&gt;(string)&lt;/code&gt; e é exatamente isto.&lt;/p&gt;


&lt;h3&gt;Conversão de booleano em string&lt;/h3&gt;


&lt;p&gt;Quando convertemos um valor booleano para string ocorre uma  simples regra o valor &lt;code&gt;TRUE&lt;/code&gt; será convertido na string 1 e o valor &lt;code&gt;FALSE&lt;/code&gt; será  convertido em uma string vazia. Observe:&lt;/p&gt;


&lt;pre class=&quot;brush: php;&quot;&gt;
&amp;lt;?php

$bool = (string) TRUE;

var_dump( $bool ); // string(1) &quot;1&quot;

echo &#39;&amp;lt;br /&amp;gt;&#39; . PHP_EOL;

$bool2 = (string) FALSE;

var_dump( $bool2 ); // string(0) &quot;&quot;

?&amp;gt;
&lt;/pre&gt;


&lt;h3&gt;Conversão de inteiro e float em string&lt;/h3&gt;


&lt;p&gt;Na conversão de inteiro e float o número será convertido  para string mantendo a sua representação. Observe:&lt;/p&gt;


&lt;pre class=&quot;brush: php;&quot;&gt;
&amp;lt;?php

$inteiro = (string) 150;

var_dump( $inteiro ); // string(3) &quot;150&quot;

echo &#39;&amp;lt;br /&amp;gt;&#39; . PHP_EOL;

$float = (string) 1.77;

var_dump( $float ); // string(4) &quot;1.77&quot;

?&amp;gt;
&lt;/pre&gt;


&lt;h2&gt;Conversão de dados para booleano no PHP&lt;/h2&gt;


&lt;p&gt;Na conversão de dados para booleano os seguintes valores  serão considerados &lt;code&gt;FALSE&lt;/code&gt; (falso):&lt;/p&gt;


&lt;ul&gt;
    &lt;li&gt;O próprio booleano &lt;code&gt;FALSE&lt;/code&gt;&lt;/li&gt;
    &lt;li&gt;O inteiro 0 (zero)&lt;/li&gt;
    &lt;li&gt;O ponto flutuante 0.0 (zero)&lt;/li&gt;
    &lt;li&gt;Uma string vazia e a string &amp;quot;0&amp;quot;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Qualquer outro valor será convertido em &lt;code&gt;TRUE&lt;/code&gt; (verdadeiro),  observe:&lt;/p&gt;


&lt;pre class=&quot;brush: php;&quot;&gt;
&amp;lt;?php

$bool = (bool) FALSE;

var_dump( $bool ); // bool(false)

echo &#39;&amp;lt;br /&amp;gt;&#39; . PHP_EOL;

$inteiro = (bool) 0;

var_dump( $inteiro ); // bool(false)

echo &#39;&amp;lt;br /&amp;gt;&#39; . PHP_EOL;

$float = (bool) 0.0;

var_dump( $float ); // bool(false)

echo &#39;&amp;lt;br /&amp;gt;&#39; . PHP_EOL;

$string = (bool) &#39;&#39;;

var_dump( $string ); // bool(false)

echo &#39;&amp;lt;br /&amp;gt;&#39; . PHP_EOL;

$inteiro = (bool) 10;

var_dump( $inteiro ); // bool(true)

echo &#39;&amp;lt;br /&amp;gt;&#39; . PHP_EOL;

$float = (bool) 1.0;

var_dump( $float ); // bool(true)

echo &#39;&amp;lt;br /&amp;gt;&#39; . PHP_EOL;

$string = (bool) &#39;Uma string&#39;;

var_dump( $string ); // bool(true)

?&amp;gt;
&lt;/pre&gt;


&lt;h2&gt;Conversão automática de tipos de dados no PHP&lt;/h2&gt;


&lt;p&gt;Apesar de existirem os conversores que acabamos  de ver o PHP também possui a conversão automática de tipos que funciona  seguindo as mesmas regras que acabamos de ver observe.&lt;/p&gt;


&lt;pre class=&quot;brush: php;&quot;&gt;
&amp;lt;?php

$soma = 10 + 3.5;

var_dump( $soma ); // float(13.5)

echo &#39;&amp;lt;br /&amp;gt;&#39; . PHP_EOL;

$soma = 10 + 7.0;

var_dump( $soma ); // float(17)

echo &#39;&amp;lt;br /&amp;gt;&#39; . PHP_EOL;

$soma = 10 + FALSE;

var_dump( $soma ); // int(10)

echo &#39;&amp;lt;br /&amp;gt;&#39; . PHP_EOL;

$soma = 1 + &#39;7.5&#39;;

var_dump( $soma ); // float(8.5)

echo &#39;&amp;lt;br /&amp;gt;&#39; . PHP_EOL;

$soma = 1 + &#39;-7.5 graus celcius&#39;;

var_dump( $soma ); // float(-6.5)

echo &#39;&amp;lt;br /&amp;gt;&#39; . PHP_EOL;

$soma = 1 + &#39;Luanito 20 anos&#39;;

var_dump( $soma ); // int(1)

echo &#39;&amp;lt;br /&amp;gt;&#39; . PHP_EOL;

$soma = &#39;20 anos de carreira&#39; + 1;

var_dump( $soma ); // int(21)

?&amp;gt;
&lt;/pre&gt;


&lt;p&gt;Como você pode observar se utilizarmos float e inteiro em  uma operação o resultado final será float, o valor &lt;code&gt;FALSE&lt;/code&gt; possui o valor 0  (zero) os dados seguiram se as mesmas regras de conversão, inclusive as strings  que só as iniciadas com valores numéricos são validas para operações  matemáticas, ou seja as regras válidas nas conversões de dados também são  aplicadas aqui na conversão automática de tipos.&lt;/p&gt;


&lt;div class=&quot;destaque&quot;&gt;
  &lt;p&gt;Não  utilizamos os conversores para array e nem para objeto como você pode observar,  mais não se preocupe assim que estes dados forem estudados mostraremos a  conversão dos mesmos.&lt;/p&gt;
&lt;/div&gt;

</content>
 </entry>
 
 <entry>
   <id>http://aprenderphp.com.br/artigo/variaveis-variaveis-constantes-magicas-e-sintaxe-heredoc-em-strings-no-php</id>
   <title>Variáveis variáveis, constantes mágicas e sintaxe heredoc em strings no PHP</title>
   <link type="text/html" href="http://aprenderphp.com.br/artigo/variaveis-variaveis-constantes-magicas-e-sintaxe-heredoc-em-strings-no-php"/>
   <updated>2010-03-22T00:00:00-07:00</updated>
   <content type="html">&lt;p&gt;Agora que já possui certo conhecimento em variáveis, tipos  de dados e em alguns operadores iremos nos aprofundar um pouco mais em alguns  itens antes de entrarmos nas estruturas de controle.&lt;/p&gt;


&lt;h2&gt;Variáveis variáveis, variáveis dinâmicas ou ainda variáveis criadas durante  a execução no PHP&lt;/h2&gt;


&lt;p&gt;Independente do nome que encontrar por aí em livros ou mesmo  pela internet, é um recurso que nos permite a criação de uma variável através  do conteúdo de outra variável.&lt;/p&gt;


&lt;p&gt;Para criar uma variável variável utiliza-se de uma variável  para servir de identificador para outra que é criada. Para isso utiliza-se duas  vezes o símbolo de &lt;code&gt;$&lt;/code&gt;, ou seja,  devemos utilizar &lt;code&gt;$$&lt;/code&gt;. Veja no exemplo a seguir.&lt;/p&gt;


&lt;pre class=&quot;brush: php;&quot;&gt;
&amp;lt;?php

// Declarando o valor da variável $a
$a = &#39;nome&#39;;

/**
 * Criamos $$a, que como possui dois $
 * também pode ser chamada pelo valor da
 * variável $a ou seja &quot;nome&quot;
 */
$$a = &#39;Mauro&#39;;

// Exibo $a e $nome que foi criada dinâmicamente
echo $a . &#39; : &#39; . $nome;

?&amp;gt;
&lt;/pre&gt;


&lt;p&gt;Como você pode ver no exemplo podemos criar a variável a  partir do valor de outra variável. O contrário também é válido ao invés de  criarmos a variável, em nosso caso, &lt;code&gt;$nome&lt;/code&gt; dinamicamente definimos seu valor  normalmente no entanto quando formos exibir seu resultado em tela podemos  acessar seu valor através de &lt;code&gt;$$a&lt;/code&gt;, lembrando que para que isto funcione &lt;code&gt;$a&lt;/code&gt; deve  possuir o mesmo valor da variável que será criada em nosso caso “nome”. Observe  o exemplo:&lt;/p&gt;


&lt;pre class=&quot;brush: php;&quot;&gt;
&amp;lt;?php

// Declarando o valor da variável $a
$a = &#39;nome&#39;;

/**
 * Criamos $nome, que é
 * o mesmo valor de $a em
 * sua declaração
 */
$nome = &#39;Mauro&#39;;

/**
 *  Exibo $a e $$a que foi criada
 *  dinâmicamente e é o equivalente a acessar
 *  a variável $nome
 */
echo $a . &#39; : &#39; . $$a;

?&amp;gt;
&lt;/pre&gt;


&lt;h2&gt;Constantes Mágicas no PHP&lt;/h2&gt;


&lt;p&gt;O PHP fornece um grande número de &lt;a href=&quot;http://www.php.net/manual/pt_BR/reserved.constants.php&quot;&gt;constantes predefinidas&lt;/a&gt;. Entretanto a maioria dessas constantes são criadas por várias extensões, e somente estarão presentes quando essas extensões estiverem disponíveis. &lt;a href=&quot;http://www.php.net/manual/pt_BR/reserved.constants.php&quot;&gt;Aqui  você pode ver as constantes predefinidas&lt;/a&gt;, lembrando que para visualizar seu conteúdo apenas seguindo a regra de que elas são dependentes de extensões.&lt;/p&gt;


&lt;p&gt;As constantes mágicas não possuem dependências, no entanto seus valores mudam dependendo de onde elas são executadas. Veja uma tabela com  as 7 constantes mágicas que o PHP possui:&lt;/p&gt;


&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;Constante&lt;/th&gt;
      &lt;th&gt;Valor retornado&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code&gt;__LINE__&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;A linha atual do script.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code&gt;__FILE__&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;O caminho completo e nome do arquivo.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code&gt;__DIR__&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;O diretório do arquivo.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code&gt;__FUNCTION__&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;O nome da função.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code&gt;__CLASS__&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;O nome da classe.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code&gt;__METHOD__&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;O nome do método de classe.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code&gt;__NAMESPACE__&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;O nome do atual namespace.&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;


&lt;p&gt;Veja um exemplo do valor retornado pelas constantes mágicas:&lt;/p&gt;


&lt;pre class=&quot;brush: php;&quot;&gt;
&amp;lt;?php

echo __LINE__ . &#39;&amp;lt;br /&amp;gt;&#39; . PHP_EOL;

echo __FILE__ . &#39;&amp;lt;br /&amp;gt;&#39; . PHP_EOL;

echo __DIR__ . &#39;&amp;lt;br /&amp;gt;&#39; . PHP_EOL;

echo __LINE__;

?&amp;gt;
&lt;/pre&gt;


&lt;div class=&quot;destaque&quot;&gt;
  &lt;p&gt;Utilizamos apenas as constantes mágicas no escopo do nosso  aprendizado, ou seja, não executamos a constante mágica equivalente a funções (&lt;code&gt;__FUNCTION__&lt;/code&gt;)  e nem as equivalentes a classes (&lt;code&gt;__CLASS__&lt;/code&gt;, &lt;code&gt;__METHOD__&lt;/code&gt;, &lt;code&gt;__NAMESPACE__&lt;/code&gt;).&lt;br /&gt;
  Com o avançar de nossos estudos ao nos  aprofundarmos em funções, classes e objetos você será capaz de ver o resultado  do uso destas constantes mágicas.&lt;/p&gt;
&lt;/div&gt;


&lt;h2&gt;Sintaxe Heredoc em strings no PHP&lt;/h2&gt;


&lt;p&gt;Agora que já esta familiarizado em como &lt;a href=&quot;/artigo/tipos-de-dados-no-php#string&quot;&gt;declarar strings&lt;/a&gt;, com aspas simples e aspas duplas, iremos aprender um novo modo de  declarar strings, a &lt;a href=&quot;http://www.php.net/manual/pt_BR/language.types.string.php#language.types.string.syntax.heredoc&quot;&gt;sintaxe  heredoc&lt;/a&gt;.&lt;/p&gt;


&lt;p&gt;Para declararmos uma string com a sintaxe heredoc utiliza-se primeiro &lt;code&gt;&amp;lt;&amp;lt;&amp;lt;&lt;/code&gt; (três sinais de menor) e em seguida definimos o  delimitador, aí definimos o texto contido na string, em seguida finalizamos a  string com o delimitador. Veja um exemplo:&lt;/p&gt;


&lt;pre class=&quot;brush: php;&quot;&gt;
&amp;lt;?php

$texto = &amp;lt;&amp;lt;&amp;lt;EOT

Eu sou uma string declarada com a sintaxe heredoc.

EOT;

echo $texto;

?&amp;gt;
&lt;/pre&gt;


&lt;div class=&quot;observacao&quot;&gt;
  &lt;ul&gt;
    &lt;li&gt;O delimitador, no nosso caso &lt;code&gt;EOT&lt;/code&gt;, tem que ser  iniciados apenas com uma letra ou &lt;code&gt;_&lt;/code&gt; (sublinhado) e podem ser seguido de letras  ou algarismos, ou seja, números podem aparecer em outras posições exceto na  primeira&lt;/li&gt;
    &lt;li&gt;Assim como na declaração de variáveis nunca  utilize caracteres especiais em nome do delimitador como acentos (é í ó)  cedilha (ç)&lt;/li&gt;
    &lt;li&gt;O delimitador final não deve ser acompanhado de  nenhum outro caractere, exceto o ponto e vírgula&lt;/li&gt;
    &lt;li&gt;O delimitador final deve ser iniciado no inicio  da linha sem tabulações ou espaço, por isso &lt;strong&gt;nunca o endente&lt;/strong&gt;.&lt;/li&gt;
    &lt;li&gt;Resumindo o delimitador final não deve conter  nada antes e nem depois do delimitador final, exceto o ponto e vírgula após sua declaração.&lt;/li&gt;
  &lt;/ul&gt;
&lt;/div&gt;


&lt;p&gt;Veja um exemplo de como estaríamos declarando de forma errada uma string com a sintaxe heredoc.&lt;/p&gt;


&lt;pre class=&quot;brush: php;&quot;&gt;
&amp;lt;?php

$texto = &lt;&lt;&lt;7ÉOT

Eu sou uma string declarada com a sintaxe heredoc.

    7éOT; echo $texto;

?&amp;gt;
&lt;/pre&gt;


&lt;p&gt;No exemplo temos todos os erros possíveis como:&lt;/p&gt;


&lt;ul&gt;
  &lt;li&gt;iniciar a string com caractere &lt;strong&gt;não&lt;/strong&gt; alfanumérico ou underline&lt;/li&gt;
  &lt;li&gt;utilizar caractere especial no nome do delimitador&lt;/li&gt;
  &lt;li&gt;edentar o delimitador final&lt;/li&gt;
  &lt;li&gt;definir o delimitador final, diferente do de  abertura, no exemplo o caractere “é” maiúsculo e minúsculo.&lt;/li&gt;
  &lt;li&gt;Tentar escrever algo na mesma linha após o delimitador final.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;As strings declaradas como heredoc se comportam como as aspas duplas, exceto que você não precisa utilizar os caracteres de escape para  definir a &lt;strong&gt;aspas simples&lt;/strong&gt; e as &lt;strong&gt;aspas duplas&lt;/strong&gt;. E como as strings  declaradas com aspas duplas elas &lt;strong&gt;interpretam  as variáveis&lt;/strong&gt; veja um exemplo:&lt;/p&gt;


&lt;pre class=&quot;brush: php;&quot;&gt;
&amp;lt;?php

$nome = &#39;Mauro George&#39;;

$texto = &amp;lt;&amp;lt;&amp;lt;PHP

Eu me chamo {$nome}, como esta string está declarada como Heredoc eu posso exibir &quot; e &#39; também sem escapar.

PHP;

echo $texto;

?&amp;gt;
&lt;/pre&gt;


&lt;p&gt;Observe que além de exibir as aspas simples e duplas sem necessitar escapar ainda pude exibir o valor de minha variável.&lt;/p&gt;


&lt;div class=&quot;dica&quot;&gt;
  &lt;p&gt;Utilize  sempre colchetes envolvendo uma variável, como no exemplo anterior, quando ela  for interpretada dentro de outra variável, ou seja na &lt;strong&gt;declaração de string como heredoc&lt;/strong&gt; e na &lt;strong&gt;declaração de strings com aspas duplas&lt;/strong&gt;.&lt;/p&gt;
&lt;/div&gt;

</content>
 </entry>
 
 <entry>
   <id>http://aprenderphp.com.br/artigo/operadores-no-php</id>
   <title>Operadores no PHP</title>
   <link type="text/html" href="http://aprenderphp.com.br/artigo/operadores-no-php"/>
   <updated>2010-03-07T00:00:00-08:00</updated>
   <content type="html">&lt;h2&gt;Introdução aos operadores no PHP&lt;/h2&gt;


&lt;p&gt;Um operador é utilizado para realizar operações entre um ou  mais valores (ou expressões, no jargão de programação) e retornar apenas um  valor final. Vamos agora aos operadores.&lt;/p&gt;


&lt;h2&gt;Operadores aritméticos no PHP&lt;/h2&gt;


&lt;p&gt;Neste grupo de operadores estão os operadores de operações  matemáticas básicas como adição, subtração, multiplicação e divisão. Veja a  tabela com os operadores:&lt;/p&gt;


&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;Operador&lt;/th&gt;
      &lt;th&gt;Função&lt;/th&gt;
      &lt;th&gt;Exemplo&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code&gt;+&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;Adição&lt;/td&gt;
      &lt;td&gt;&lt;code&gt;$a + $b&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code&gt;-&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;Subtração&lt;/td&gt;
      &lt;td&gt;&lt;code&gt;$a - $b&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code&gt;*&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;Multiplicação&lt;/td&gt;
      &lt;td&gt;&lt;code&gt;$a * $b&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code&gt;/&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;Divisão&lt;/td&gt;
      &lt;td&gt;&lt;code&gt;$a / $b&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code&gt;%&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;Módulo (resto da divisão)&lt;/td&gt;
      &lt;td&gt;&lt;code&gt;$a % $b&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;


&lt;p&gt;Veja um exemplo com os operadores aritméticos.&lt;/p&gt;


&lt;div class=&quot;observacao&quot;&gt;
  &lt;p&gt;A  partir deste ponto &lt;strong&gt;não&lt;/strong&gt; irei incluir  todos os elementos necessários para uma página HTML bem formatada de acordo com  o W3C, apenas incluirei os códigos PHP, por ser o foco de nosso estudo, caso  ainda tenha alguma duvida sobre a integração PHP e HTML visite a página Começando  a programar em PHP.&lt;/p&gt;
&lt;/div&gt;


&lt;pre class=&quot;brush: php; html-script: true&quot;&gt;
&amp;lt;?php
// Declarando os valores das variáveis
$a = 4;
$b = 2;

?&amp;gt;
&amp;lt;h2&amp;gt;Adição&amp;lt;/h2&amp;gt;
&amp;lt;p&amp;gt;
&amp;lt;?php

echo $a + $b;

?&amp;gt;
&amp;lt;/p&amp;gt;
&amp;lt;h2&amp;gt;Subtração&amp;lt;/h2&amp;gt;
&amp;lt;p&amp;gt;
&amp;lt;?php

echo $a - $b;

?&amp;gt;
&amp;lt;/p&amp;gt;
&amp;lt;h2&amp;gt;Multiplicação&amp;lt;/h2&amp;gt;
&amp;lt;p&amp;gt;
&amp;lt;?php

echo $a * $b;

?&amp;gt;
&amp;lt;/p&amp;gt;
&amp;lt;h2&amp;gt;Divisão&amp;lt;/h2&amp;gt;
&amp;lt;p&amp;gt;
&amp;lt;?php

echo $a / $b;

?&amp;gt;
&amp;lt;/p&amp;gt;
&amp;lt;h2&amp;gt;Módulo(resto da divisão)&amp;lt;/h2&amp;gt;
&amp;lt;p&amp;gt;
&amp;lt;?php

echo $a % $b;

?&amp;gt;
&amp;lt;/p&amp;gt;
&lt;/pre&gt;


&lt;p&gt;Observe que o módulo deu zero, pois utilizamos uma operação  em que a divisão em que não tinha resto. Veja agora um exemplo em que nossa  divisão gera resto.&lt;/p&gt;


&lt;pre class=&quot;brush: php; html-script: true&quot;&gt;
&amp;lt;?php
// Declarando os valores das variáveis
$a = 5;
$b = 2;

?&amp;gt;
&amp;lt;h1&amp;gt;Valores&amp;lt;/h1&amp;gt;
&amp;lt;p&amp;gt;$a possui o valor de &amp;lt;strong&amp;gt;&amp;lt;?php echo $a; ?&amp;gt;&amp;lt;/strong&amp;gt; e $b possui o valor de &amp;lt;strong&amp;gt;&amp;lt;?php echo $b; ?&amp;gt;&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;
&amp;lt;h2&amp;gt;Módulo(resto da divisão)&amp;lt;/h2&amp;gt;
&amp;lt;p&amp;gt;
&amp;lt;?php

echo $a % $b;

?&amp;gt;
&amp;lt;/p&amp;gt;
&lt;/pre&gt;


&lt;h2&gt;Operadores de Atribuição no PHP&lt;/h2&gt;


&lt;p&gt;O operador de atribuição é utilizado quando queremos  atribuir o valor da expressão que esta a direita ao operando (normalmente uma  variável) que esta a sua esquerda (quase como se fosse um “igual a”, como por  exemplo x é igual a 1 e y igual a 2).&lt;/p&gt;


&lt;p&gt;O operador mais básico de atribuição você já deve estar  imaginando é o sinal de igual (=) em que usamos para atribuir todas as nossas  variáveis anteriormente. Veja a seguir o uso do operador de atribuição igual e  um truque que podemos fazer utilizando &lt;strong&gt;operadores  aritméticos &lt;/strong&gt;e &lt;strong&gt;expressões&lt;/strong&gt;.&lt;/p&gt;


&lt;pre class=&quot;brush: php; html-script: true&quot;&gt;
&amp;lt;?php
// Declarando o valor de a com uma simples expressão
$a = 5 + 3;

echo $a; //imprime 8

?&amp;gt;
&amp;lt;br /&amp;gt;
&amp;lt;?php

// Atribuimos o valor de 2 a variavel $c e somamos com
// 5 para ser o valor de b
$b = ( $c = 2 ) + 5;

echo $b; //imprime 7

?&amp;gt;
&amp;lt;br /&amp;gt;
&amp;lt;?php

echo $c; //imprime 2

?&amp;gt;
&lt;/pre&gt;


&lt;p&gt;Observe que conseguimos declarar o valor de &lt;code&gt;$a&lt;/code&gt; uma simples  expressão aritmética, lembrando que você pode utilizar todos os &lt;strong&gt;operadores aritméticos&lt;/strong&gt; que aprendemos  anteriormente em sua expressão.&lt;/p&gt;


&lt;p&gt;Em seguida criamos a variável &lt;code&gt;$b&lt;/code&gt; e &lt;code&gt;$c&lt;/code&gt;, sendo &lt;code&gt;$c&lt;/code&gt; criada  dentro da atribuição de &lt;code&gt;$b&lt;/code&gt; sendo assim &lt;code&gt;$b&lt;/code&gt; equivale a &lt;code&gt;$c&lt;/code&gt;, que equivale a 2, mais  5.&lt;/p&gt;


&lt;p&gt;Além do formato de atribuição que aprendemos  podemos combinar o operador de atribuição a todos os operadores aritméticos e de  string observe a tabela a seguir:&lt;/p&gt;


&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;Operador&lt;/th&gt;
      &lt;th&gt;Função&lt;/th&gt;
      &lt;th&gt;Exemplo&lt;/th&gt;
      &lt;th&gt;Equivalente a&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code&gt;+=&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;Atribuição e adição&lt;/td&gt;
      &lt;td&gt;&lt;code&gt;$a += $b&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;&lt;code&gt;$a = $a + $b&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code&gt;-=&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;Atribuição e Subtração&lt;/td&gt;
      &lt;td&gt;&lt;code&gt;$a -= $b&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;&lt;code&gt;$a = $a - $b&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code&gt;*=&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;Atribuição e Multiplicação&lt;/td&gt;
      &lt;td&gt;&lt;code&gt;$a *= $b&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;&lt;code&gt;$a = $a * $b&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code&gt;/=&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;Atribuição e Divisão&lt;/td&gt;
      &lt;td&gt;&lt;code&gt;$a /= $b&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;&lt;code&gt;$a = $a / $b&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code&gt;%=&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;Atribuição e Módulo&lt;/td&gt;
      &lt;td&gt;&lt;code&gt;$a %= $b&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;&lt;code&gt;$a = $a % $b&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code&gt;.=&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;Atribuição e concatenação&lt;/td&gt;
      &lt;td&gt;&lt;code&gt;$a .= $b&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;&lt;code&gt;$a = $a . $b&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;


&lt;div class=&quot;observacao&quot;&gt;
  &lt;p&gt;Você ainda provavelmente não conhece o operador de concatenação mais não se preocupe, eles serão explicados detalhadamente a seguir.&lt;/p&gt;
&lt;/div&gt;


&lt;p&gt;Veja agora um exemplo utilizando &lt;strong&gt;operadores de atribuição&lt;/strong&gt; em conjunto com os &lt;strong&gt;operadores aritméticos.&lt;/strong&gt;&lt;/p&gt;


&lt;pre class=&quot;brush: php;&quot;&gt;
&amp;lt;?php
// Declarando o valor de a
$a = 5;
// Atribuindo e somando 3 em $a
// ou seja $a = 5 + 3;
$a += 3;

echo $a //imprime 8

?&amp;gt;
&lt;/pre&gt;


&lt;p&gt;Definimos o valor de $a com utilizando o operador de  atribuição e adição em conjunto. No entanto observe o exemplo a seguir:&lt;/p&gt;


&lt;pre class=&quot;brush: php;&quot;&gt;
&amp;lt;?php
// Declarando o valor de a
$a = 5;

// Redeclarando o valor de a
$a = 3;

echo $a //imprime 3
// Caso quisessemos somar 3 a $a poderiamos utilizar
// $a = 3
// $a += 5;
//
// Ou ainda
// $a = 5 + 3;

?&amp;gt;
&lt;/pre&gt;


&lt;p&gt;Neste exemplo declaramos &lt;code&gt;$a&lt;/code&gt; e em seguida a redeclaramos, não  confundir este comportamento ao tentar utilizar os &lt;strong&gt;operadores de atribuição&lt;/strong&gt; em conjunto com os &lt;strong&gt;operadores aritméticos&lt;/strong&gt;. Pois como vimos podemos atribuir valores  utilizando os operadores aritméticos ou com operadores de atribuição em  conjunto com os operadores aritméticos.&lt;/p&gt;


&lt;h2&gt;Operadores de string no PHP&lt;/h2&gt;


&lt;p&gt;O único operador de string que possuímos no PHP é o operador  de concatenação, além do que falamos anteriormente que é o de atribuição e concatenação, que é representado pelo &lt;code&gt;.&lt;/code&gt; (ponto). O operador de concatenação tem  por finalidade unir o conteúdo de duas strings, veja o exemplo:&lt;/p&gt;


&lt;pre class=&quot;brush: php;&quot;&gt;
&amp;lt;?php
// Declaro a variável $titulo
$titulo = &#39;Operadores de string no PHP&#39;;
// Concateno $titulo a $texto
$texto = &#39;Estou aprendendo sobre &#39; . $titulo;

echo $texto;

echo &#39;&lt;br /&gt;&#39; . PHP_EOL;

// Mesmo exemplo anterior porém utilizando atribuição e concatenação
$texto = &#39;Estou aprendendo sobre &#39;;
$texto .= $titulo;

echo $texto;
?&amp;gt;
&lt;/pre&gt;


&lt;h2&gt;Operador de incremento/decremento no PHP&lt;/h2&gt;


&lt;p&gt;Os operadores de incremento e decremento são muito parecidos  com os &lt;strong&gt;operadores aritméticos&lt;/strong&gt;. Eles  permitem que sejam feitas adições (incremento) e subtrações (decremento) direto  na variável informada, mas sempre operações unitárias, isto é, soma se 1 ou subtrai  se 1 da variável. Os operadores de incremento e decremento são respectivamente  &lt;code&gt;++&lt;/code&gt; e &lt;code&gt;--&lt;/code&gt;.&lt;/p&gt;


&lt;p&gt;Existem duas formas de incremento/decremento: Pós e Pré.&lt;/p&gt;


&lt;h3&gt;Pós incremento/decremento no PHP&lt;/h3&gt;


&lt;p&gt;No pós incremento/decremento o PHP retorna o valor da  variável para só depois então a incrementá-la/decrementá-la. Veja o exemplo:&lt;/p&gt;


&lt;pre class=&quot;brush: php;&quot;&gt;
&amp;lt;?php

$a = 10;
$b = $a++; // Primeiro $a é atribuido a $b para só então ser incrementada
$a++;

echo &#39;$a = &#39; . $a . &#39; | $b = &#39; . $b;

?&amp;gt;
&lt;/pre&gt;


&lt;p&gt;Atribuímos o valor de &lt;code&gt;$a++&lt;/code&gt; a variável &lt;code&gt;$b&lt;/code&gt;, no entanto como no  pós incremento/decremento primeiro retorna o valor para só depois ocorrer o  incremento/decremento &lt;code&gt;$b&lt;/code&gt; ficou com o valor de &lt;code&gt;$a&lt;/code&gt; inicial, ou seja 10, e &lt;code&gt;$a&lt;/code&gt; foi  incrementado 2 vezes ficando com o valor de 12.&lt;/p&gt;


&lt;h3&gt;Pré incremento/decremento no PHP&lt;/h3&gt;


&lt;p&gt;No pré incremento/decremento o PHP primeiro  incrementa/decrementa a variável e depois retorna o seu valor. Observe  alterando o exemplo anterior:&lt;/p&gt;


&lt;pre class=&quot;brush: php;&quot;&gt;
&amp;lt;?php

$a = 10;
$b = ++$a; // Primeiro $a é incrementada e só depois é atribuido a $b
++$a;

echo &#39;$a = &#39; . $a . &#39; | $b = &#39; . $b;

?&amp;gt;
&lt;/pre&gt;


&lt;p&gt;Atribuímos o valor de &lt;code&gt;++$a&lt;/code&gt; a variável &lt;code&gt;$b&lt;/code&gt;, no entanto como no  pré incremento/decremento primeiro ocorre o incremento/decremento em seguida  retorna o valor para &lt;code&gt;$b&lt;/code&gt;, que ficou com o valor de &lt;code&gt;$a&lt;/code&gt; inicial incrementado, ou  seja 11, e &lt;code&gt;$a&lt;/code&gt; foi incrementada novamente ficando com o valor de 12.&lt;/p&gt;


&lt;h3&gt;Inverter o sinal no PHP&lt;/h3&gt;


&lt;p&gt;Além de incremento/decremento podemos inverter o sinal de um  operador com o sinal de –(menos) veja a seguir:&lt;/p&gt;


&lt;pre class=&quot;brush: php;&quot;&gt;
&amp;lt;?php

$a = 10;
$b = -$a; // Inverte o sinal de $a e atribui a $b


echo &#39;$a = &#39; . $a . &#39; | $b = &#39; . $b;

?&amp;gt;
&lt;/pre&gt;


&lt;p&gt;Como você pode observar apenas alterou o sinal de positivo  para negativo, o inverso também é possível.&lt;/p&gt;


&lt;p&gt;Fique agora com uma tabela para uma consulta caso tenha  duvida nos operadores de incremento e decremento.&lt;/p&gt;


&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;Operador&lt;/th&gt;
      &lt;th&gt;Nome&lt;/th&gt;
      &lt;th&gt;Função&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code&gt;++$a&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;Pré-incremento&lt;/td&gt;
      &lt;td&gt;Incrementa &lt;code&gt;$a&lt;/code&gt; em um, e então retorna &lt;code&gt;$a&lt;/code&gt;.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code&gt;$a++&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;Pós-incremento&lt;/td&gt;
      &lt;td&gt;Retorna &lt;code&gt;$a&lt;/code&gt;, e então incrementa &lt;code&gt;$a&lt;/code&gt; em um.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code&gt;--$a&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;Pré-decremento&lt;/td&gt;
      &lt;td&gt;Decrementa &lt;code&gt;$a&lt;/code&gt; em um, e então retorna &lt;code&gt;$a&lt;/code&gt;.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code&gt;$a--&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;Pós-decremento&lt;/td&gt;
      &lt;td&gt;Retorna &lt;code&gt;$a&lt;/code&gt;, e então decrementa &lt;code&gt;$a&lt;/code&gt; em um.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code&gt;-$a&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;Inverter o sinal&lt;/td&gt;
      &lt;td&gt;Inverte o sinal de &lt;code&gt;$a&lt;/code&gt; e retorna &lt;code&gt;$a&lt;/code&gt;.&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;


&lt;h2&gt;Atribuição por referência&lt;/h2&gt;


&lt;p&gt;Outro meio de atribuir valores a variáveis que o PHP nos  fornece é a atribuição por referência.  Ou seja, a nova variável será uma referência,  um apelido, a variável original sendo assim qualquer alteração na variável  original alterará a variável de referencia como qualquer alteração na variável  de referência alterara a variável original. Observe:&lt;/p&gt;


&lt;pre class=&quot;brush: php;&quot;&gt;
&amp;lt;?php

// Criamos a variável $b
$b = &#39;Estamos aprendendo sobre&#39;;

// Atribuimos por referência o valor de $b a $a,
// ou seja, ambas agora possuem o mesmo valor
$a = &amp;amp;$b;

// Altero o valor de $a concatenando o com uma string
// caso não tenha entendido a concatenação volte a operadores de string
$a .= &#39; Atribuição por referência no PHP&#39;;

// Exibo $a e $b pulando linhas para melhor vizualização
echo $a;

echo &#39;&amp;lt;br /&amp;gt;&#39; . PHP_EOL;

echo $b;

echo &#39;&amp;lt;br /&amp;gt;&#39; . PHP_EOL;

// Alterei o valor de $b e como $b foi atribuido por referência a $a
// agora quando altero $b o valor de $a muda também
$b = &#39;Alterei o valor de $b e sabia que o de $a muda também?&#39;;

echo $a;

echo &#39;&amp;lt;br /&amp;gt;&#39; . PHP_EOL;

echo $b;

?&amp;gt;
&lt;/pre&gt;


&lt;div class=&quot;destaque&quot;&gt;
  &lt;p&gt;Caso você já tenha programado em PHP ou mesmo em outra linguagem deve estar se perguntado sobre os operadores de comparação, os operadores lógicos e até mesmo o operador ternário. Não se preocupe quando chegarmos em estruturas de controle voltaremos a falar sobre operadores.&lt;/p&gt;
&lt;/div&gt;

</content>
 </entry>
 
 <entry>
   <id>http://aprenderphp.com.br/artigo/tipos-de-dados-no-php</id>
   <title>Tipos de dados no PHP</title>
   <link type="text/html" href="http://aprenderphp.com.br/artigo/tipos-de-dados-no-php"/>
   <updated>2010-02-28T00:00:00-08:00</updated>
   <content type="html">&lt;h2&gt;Introdução aos tipos de dados no PHP&lt;/h2&gt;


&lt;p&gt;Agora que você já sabe como criar variáveis e constantes no  PHP, e sabe exibir os dados no browser iremos nos aprofundar-nos diferentes  tipos de dados suportados pelo PHP.&lt;/p&gt;


&lt;div class=&quot;dica&quot;&gt;
  &lt;p&gt;Caso  você já tenha programado em outra linguagem como C, deve achar estranho não ser  necessário a declaração de uma variável, no PHP basta-lhe atribuir um valor  diretamente, pois é decidido em tempo de execução pelo PHP, dependendo do  contexto na qual a variável é usada.&lt;/p&gt;
&lt;/div&gt;




&lt;h2&gt;Diferentes tipos de dados suportados pelo PHP&lt;/h2&gt;


&lt;p&gt;O PHP suporta oito tipos de dados primitivos divididos em  três grupos:&lt;/p&gt;


&lt;ol&gt;
  &lt;li&gt;Quatro tipos básicos, os dados escalares
    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;#integer&quot;&gt;integer&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#float&quot;&gt;float (número de ponto flutuante, ou também  double)&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#string&quot;&gt;string&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#boolean&quot;&gt;boolean&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Dois tipos compostos
    &lt;ul&gt;
      &lt;li&gt;array&lt;/li&gt;
      &lt;li&gt;object&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Dois tipos especiais:
    &lt;ul&gt;
      &lt;li&gt;resource&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#null&quot;&gt;NULL&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ol&gt;




&lt;h2 id=&quot;integer&quot;&gt;O tipo integer, inteiro, no PHP&lt;/h2&gt;


&lt;p&gt;Um &lt;a href=&quot;http://pt.wikipedia.org/wiki/Inteiro&quot;&gt;inteiro&lt;/a&gt; é qualquer numero sem decimais, positivou ou negativo. Englobando todos os  números do conjunto Z(os números inteiros).&lt;/p&gt;


&lt;pre class=&quot;brush: php; html-script: true&quot;&gt;
&amp;lt;?php

// Declaração de uma variavel como inteiro
$ano_nascimento = 1989;

?&gt;
&amp;lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&amp;gt;
&amp;lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&amp;gt;
&amp;lt;head&amp;gt;
&amp;lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot; /&amp;gt;
&amp;lt;title&amp;gt;Tipo Inteiro no PHP&amp;lt;/title&amp;gt;
&amp;lt;/head&amp;gt;

&amp;lt;body&amp;gt;
&amp;lt;p&amp;gt;Eu nasci no ano de &amp;lt;?php echo $ano_nascimento; ?&amp;gt;&amp;lt;/p&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/pre&gt;


&lt;h2 id=&quot;float&quot;&gt;O tipo float ou double, número de ponto flutuante, no PHP&lt;/h2&gt;


&lt;p&gt;Float, Double ou ainda números de ponto flutuante são os &lt;a href=&quot;http://pt.wikipedia.org/wiki/N%C3%BAmeros_reais&quot;&gt;números reais&lt;/a&gt;.&lt;/p&gt;


&lt;pre class=&quot;brush: php; html-script: true&quot;&gt;
&amp;lt;?php

// Declaração de uma variavel como float, armazenando o valor de pi
$pi = 3.14159265;

?&amp;gt;
&amp;lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&amp;gt;
&amp;lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&amp;gt;
&amp;lt;head&amp;gt;
&amp;lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot; /&amp;gt;
&amp;lt;title&amp;gt;Tipo float, double ou número de ponto flutuante no PHP&amp;lt;/title&amp;gt;
&amp;lt;/head&amp;gt;

&amp;lt;body&amp;gt;
&amp;lt;p&amp;gt;O valor de pi é &amp;lt;?php echo $pi; ?&amp;gt;&amp;lt;/p&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/pre&gt;


&lt;h2 id=&quot;string&quot;&gt;O tipo string no PHP&lt;/h2&gt;


&lt;p&gt;Uma string é uma série de caracteres, um texto por exemplo.  Para declararmos strings podemos utilizar as &lt;strong&gt;aspas simples (apóstrofos)&lt;/strong&gt; e as &lt;strong&gt;aspas duplas&lt;/strong&gt;.&lt;/p&gt;


&lt;h3&gt;String com aspas simples (apóstrofos) no PHP&lt;/h3&gt;


&lt;p&gt;Para definirmos uma string com aspas simples basta  delimitarmos o texto com aspas simples (&lt;code&gt;&#39;&lt;/code&gt;).&lt;/p&gt;


&lt;pre class=&quot;brush: php; html-script: true&quot;&gt;
&amp;lt;?php

// Declaração de uma variavel com string com aspas simples
$texto = &#39;O PHP é uma linguagem server-side.&#39;;

?&amp;gt;
&amp;lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&amp;gt;
&amp;lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&amp;gt;
&amp;lt;head&amp;gt;
&amp;lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot; /&amp;gt;
&amp;lt;title&amp;gt;String com aspas simples no PHP&amp;lt;/title&amp;gt;
&amp;lt;/head&amp;gt;

&amp;lt;body&amp;gt;
&amp;lt;p&amp;gt;&amp;lt;?php echo $texto; ?&amp;gt;&amp;lt;/p&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/pre&gt;


&lt;p&gt;Agora uma pergunta. E se eu quiser definir uma aspa simples  no meu texto o que farei? Já que as aspas simples são os delimitadores de  string. Veja o exemplo do que acontece se eu apenas inserir uma aspa simples no  meio da minha string.&lt;/p&gt;


&lt;pre class=&quot;brush: php; html-script: true&quot;&gt;
&amp;lt;?php

// Declaração de uma variavel com string com aspas simples
$texto = &#39;Ele comprou uma pizza no Joey&#39;s.&#39;;

?&amp;gt;
&amp;lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&amp;gt;
&amp;lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&amp;gt;
&amp;lt;head&amp;gt;
&amp;lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot; /&amp;gt;
&amp;lt;title&amp;gt;String com aspas simples no PHP&amp;lt;/title&amp;gt;
&amp;lt;/head&amp;gt;

&amp;lt;body&amp;gt;
&amp;lt;p&amp;gt;&amp;lt;?php echo $texto; ?&amp;gt;&amp;lt;/p&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/pre&gt;


&lt;p&gt;Sim! Como você deve ter imaginado foi gerado um erro já que a aspa simples é o delimitador de string. Para especificar uma aspa simples (apóstrofo) no meio de  uma string você precisará &amp;quot;escapá-la&amp;quot; com uma contra barra (&lt;code&gt;\&lt;/code&gt;)  veja a seguir.&lt;/p&gt;


&lt;pre class=&quot;brush: php; html-script: true&quot;&gt;
&amp;lt;?php

// Declaração de uma variavel com string com aspas simples
$texto = &#39;Ele comprou uma pizza no Joey\&#39;s.&#39;;

?&amp;gt;
&amp;lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&amp;gt;
&amp;lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&amp;gt;
&amp;lt;head&amp;gt;
&amp;lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot; /&amp;gt;
&amp;lt;title&amp;gt;String com aspas simples no PHP&amp;lt;/title&amp;gt;
&amp;lt;/head&amp;gt;

&amp;lt;body&amp;gt;
&amp;lt;p&amp;gt;&amp;lt;?php echo $texto; ?&amp;gt;&amp;lt;/p&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/pre&gt;


&lt;h3&gt;String com aspas duplas no PHP&lt;/h3&gt;


&lt;p&gt;A grande diferença entre as strings declaradas com aspas  simples e as declaradas com aspas duplas está no fato de que as strings declaradas com aspas duplas &lt;strong&gt;interpretam  as variáveis&lt;/strong&gt;.&lt;/p&gt;


&lt;pre class=&quot;brush: php; html-script: true&quot;&gt;
&amp;lt;?php
// Declaração de um produto
$produto = &#39;pizza&#39;;
// Declaração de uma variavel com string com aspas duplas
$texto = &quot;Ele \&quot;comprou\&quot; uma $produto no Joey&#39;s.&quot;;

?&amp;gt;
&amp;lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&amp;gt;
&amp;lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&amp;gt;
&amp;lt;head&amp;gt;
&amp;lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot; /&amp;gt;
&amp;lt;title&amp;gt;String com aspas duplas no PHP&amp;lt;/title&amp;gt;
&amp;lt;/head&amp;gt;

&amp;lt;body&amp;gt;
&amp;lt;p&amp;gt;&amp;lt;?php echo $texto; ?&amp;gt;&amp;lt;/p&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/pre&gt;


&lt;p&gt;Observe que a variável &lt;code&gt;$produto&lt;/code&gt; foi interpretada dentro da  string declarada na variável &lt;code&gt;$texto&lt;/code&gt;. Coisa que &lt;strong&gt;não ocorre nas variáveis declaradas com aspas simples&lt;/strong&gt;. Veja o  exemplo a seguir:&lt;/p&gt;


&lt;pre class=&quot;brush: php; html-script: true&quot;&gt;
&amp;lt;?php
// Declaração de um produto
$produto = &#39;pizza&#39;;
// Declaração de uma variavel com string com aspas duplas
$texto = &#39;Ele comprou uma $produto no Joey\&#39;s.&#39;;

?&amp;gt;
&amp;lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&amp;gt;
&amp;lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&amp;gt;
&amp;lt;head&amp;gt;
&amp;lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot; /&amp;gt;
&amp;lt;title&amp;gt;String com aspas duplas no PHP&amp;lt;/title&amp;gt;
&amp;lt;/head&amp;gt;

&amp;lt;body&amp;gt;
&amp;lt;p&amp;gt;&amp;lt;?php echo $texto; ?&amp;gt;&amp;lt;/p&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/pre&gt;


&lt;div class=&quot;observacao&quot;&gt;
  &lt;p&gt;Assim  como tivemos que inserir uma contra barra (&lt;code&gt;\&lt;/code&gt;) para declarar uma aspa  simples quando declaramos uma string entre aspas simples devemos utilizar o  mesmo caractere de escape, contra barra (&lt;code&gt;\&lt;/code&gt;), para podemos inserir as  aspas duplas dentro de uma string declarada com aspas duplas.&lt;/p&gt;
&lt;/div&gt;


&lt;p&gt;Outra grande diferença entre as aspas simples e as aspas duplas é que temos uma sequência de caracteres de controle que podem ser  inserido em nossa string, veja a tabela a seguir:&lt;/p&gt;


&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;Seqüência&lt;/th&gt;
      &lt;th&gt;Significado&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code&gt;\n&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;fim de linha&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code&gt;\r&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;retorno de carro(carriage return)&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code&gt;\t&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;TAB horizontal&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code&gt;\v&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;TAB vertical&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code&gt;\f&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;form feed&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code&gt;\\&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;contra barra ou barra invertida&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code&gt;\$&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;sinal de cifrão&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code&gt;\&quot;&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;Aspas&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;


&lt;p&gt;Não fique preocupado em ter que decorar todas as seqüências  de caracteres de controle, pois a tabela estará aqui para quando você precisar  tirar uma duvida e a medida de sua necessidade você a ira decorando com o  passar do tempo. Veja um exemplo a seguir de alguns caracteres de controle em  seguida uma explicação sobre o exemplo:&lt;/p&gt;


&lt;pre class=&quot;brush: php; html-script: true&quot;&gt;
&amp;lt;?php
// Declaração de uma string com aspas simples mo PHP
$texto = &#39;Ele comprou uma
 pizza no Joey\&#39;s e custou R$ 30,00 reais&#39;;

// Declaração de uma string com aspas duplas mo PHP
$texto2 = &quot;Ele comprou uma \n pizza no Joey&#39;s e custou R$ 30,00 reais&quot;;

// Declaração de uma string com aspas duplas mo PHP, e utilizando a contra barra para escapar o $
$texto3 = &quot;Você se lembra que existia aqui uma variavel de nome \$produto?&quot;;

// Repare que não precisei escapar a contra barra
$texto4 = &quot;Não preciso escapar a \ ?&quot;;

// Aqui eu preciso
$texto5 = &quot;O texto termina com \\&quot;;
?&amp;gt;
&amp;lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&amp;gt;
&amp;lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&amp;gt;
&amp;lt;head&amp;gt;
&amp;lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot; /&amp;gt;
&amp;lt;title&amp;gt;String com aspas duplas no PHP&amp;lt;/title&amp;gt;
&amp;lt;/head&amp;gt;

&amp;lt;body&amp;gt;
&amp;lt;p&amp;gt;&amp;lt;?php echo $texto; ?&amp;gt;&amp;lt;/p&amp;gt;
&amp;lt;p&amp;gt;&amp;lt;?php echo $texto2; ?&amp;gt;&amp;lt;/p&amp;gt;
&amp;lt;p&amp;gt;&amp;lt;?php echo $texto3; ?&amp;gt;&amp;lt;/p&amp;gt;
&amp;lt;p&amp;gt;&amp;lt;?php echo $texto4; ?&amp;gt;&amp;lt;/p&amp;gt;
&amp;lt;p&amp;gt;&amp;lt;?php echo $texto5; ?&amp;gt;&amp;lt;/p&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/pre&gt;


&lt;p&gt;Para visualizar o primeiro exemplo abra o código fonte da  página no seu browser e observe que os dois primeiros parágrafos apesar de  idênticos um foi declarado como string com aspas simples e o outro com aspas  duplas. No que foi declarado com aspas duplas repare que utilizamos o caractere  de controle &lt;code&gt;\n&lt;/code&gt; para quebra linha enquanto no outro utilizamos uma quebra de  linha no próprio código fonte, é um exemplo apenas para ilustrar o  funcionamento do caractere de controle &lt;code&gt;\n&lt;/code&gt;.&lt;/p&gt;


&lt;p&gt;Você deve esta se perguntando como eu pude escrever o sinal de &lt;code&gt;$&lt;/code&gt;, nas variáveis &lt;code&gt;$texto&lt;/code&gt; e &lt;code&gt;$texto2&lt;/code&gt;, normalmente se eu necessito utilizar o  caractere de controle. A resposta é que não a nenhum caractere seguido dele. Na  variável &lt;code&gt;$texto3&lt;/code&gt; como a texto seguido do &lt;code&gt;$&lt;/code&gt; aí sim eu deve utilizar o caractere de controle.&lt;/p&gt;


&lt;p&gt;Algo parecido ocorre com a contra barra observe que na  variável &lt;code&gt;$texto4&lt;/code&gt; eu não precisei escapar a contra barra, a contra barra só  precisa ser escapa no final da string assim como foi declarado na variável &lt;code&gt;$texto5&lt;/code&gt;.&lt;/p&gt;


&lt;div class=&quot;observacao&quot;&gt;
  &lt;p&gt;Caso já tenha pego algum script pela internet em PHP, talvez já tenha se deparado com &lt;code&gt;\r\n&lt;/code&gt; para finalizar a linha, ou apenas &lt;code&gt;\n&lt;/code&gt; no entanto &lt;strong&gt;não o faça&lt;/strong&gt;. Prefira a constante do próprio PHP, PHP_EOL. Pois seu objetivo é exatamente este criar uma nova linha(new line) cross-plataforma  assim você não precisa se preocupar como é que é pra criar uma linha no Windows ou no Linux.&lt;/p&gt;
&lt;/div&gt;


&lt;div class=&quot;dica&quot;&gt;
  &lt;p&gt;Não  se esqueça que a sequência de caracteres de controle (escape) &lt;strong&gt;só é interpretada pelas strings declaradas  com aspas duplas&lt;/strong&gt;, e que as variáveis também &lt;strong&gt;só são interpretadas em strings declaradas com aspas duplas&lt;/strong&gt;.&lt;/p&gt;
&lt;/div&gt;


&lt;div class=&quot;destaque&quot;&gt;
  &lt;p&gt;Caso  você esteja sentindo falta da &lt;a href=&quot;http://www.php.net/manual/pt_BR/language.types.string.php#language.types.string.syntax.heredoc&quot;&gt;sintaxe  Heredoc&lt;/a&gt; não se preocupe ela será abordada mais a frente, como o objetivo é  um passo a passo a idéia é você ir se acostumando com as sintaxes aqui apresentadas e mais pra frente alguns assuntos terão que ser retomados. Assim  você não sofrerá com uma grande quantidade de informação e pouco tempo de  absorção.&lt;/p&gt;
&lt;/div&gt;


&lt;h2 id=&quot;boolean&quot;&gt;O tipo boolean, booleano, no PHP&lt;/h2&gt;


&lt;p&gt;O tipo booleano é muito simples pois aceita apenas os  valores &lt;strong&gt;verdadeiro(&lt;code&gt;TRUE&lt;/code&gt;)&lt;/strong&gt; ou &lt;strong&gt;falso(&lt;code&gt;FALSE&lt;/code&gt;)&lt;/strong&gt;.&lt;/p&gt;


&lt;pre class=&quot;brush: php;&quot;&gt;
&amp;lt;?php
// Declaração de uma variável booleana com o valor verdadeiro
$sim = TRUE;
// Declaração de uma variável booleana com o valor falso
$nao = FALSE;

?&amp;gt;
&lt;/pre&gt;


&lt;p&gt;Você deve ter reparado que não exibimos valores na tela,  isto porque o tipo booleano expressa um valor verdade (verdadeiro ou falso). Quando  chegarmos às estruturas de controle aí sim o valor booleano fará muito mais  sentido.&lt;/p&gt;


&lt;div class=&quot;dica&quot;&gt;
  &lt;p&gt;O tipo booleano é case-insensitive, ou seja, não  diferencia maiúsculas de minúsculas. Isto é &lt;code&gt;true&lt;/code&gt;, &lt;code&gt;TrUe&lt;/code&gt; e &lt;code&gt;TRUE&lt;/code&gt; são iguais assim  como &lt;code&gt;false&lt;/code&gt;, &lt;code&gt;FaLsE&lt;/code&gt; e &lt;code&gt;FALSE&lt;/code&gt; são iguais.&lt;br /&gt;
No entanto prefira sempre utilizar: &lt;code&gt;TRUE&lt;/code&gt; e &lt;code&gt;FALSE&lt;/code&gt; ou &lt;code&gt;true&lt;/code&gt; e &lt;code&gt;false&lt;/code&gt;.&lt;/p&gt;
&lt;/div&gt;


&lt;h2 id=&quot;null&quot;&gt;O tipo NULL no PHP&lt;/h2&gt;


&lt;p&gt;Outro tipo de dado muito simples, o valor especial &lt;code&gt;NULL&lt;/code&gt;,  representa que a variável não tem valor. &lt;code&gt;NULL&lt;/code&gt; é o único valor possível do tipo &lt;code&gt;NULL&lt;/code&gt;.&lt;/p&gt;


&lt;pre class=&quot;brush: php;&quot;&gt;
&amp;lt;?php
// Declaração de uma variável NULL
$nulo = NULL;

?&amp;gt;
&lt;/pre&gt;


&lt;div class=&quot;dica&quot;&gt;
  &lt;p&gt;O tipo &lt;code&gt;NULL&lt;/code&gt; é case-insensitive, assim como o tipo booleano , ou seja, não  diferencia maiúsculas de minúsculas. Isto é &lt;code&gt;null&lt;/code&gt;, &lt;code&gt;NulL&lt;/code&gt; e &lt;code&gt;NULL&lt;/code&gt; são iguais.&lt;br /&gt;
No entanto prefira sempre utilizar: &lt;code&gt;NULL&lt;/code&gt; ou &lt;code&gt;null&lt;/code&gt;.&lt;/p&gt;
&lt;/div&gt;


&lt;div class=&quot;destaque&quot;&gt;
  &lt;p&gt;Você  deve ter reparado que não falamos dos tipos compostos (array e object) e do  tipo especial resource. Isso porque como a proposta de aprendizado é orientada  a PHP e algoritmos não a sentido me aprofundar nestes tipos de dados se você  ainda não sabe os operadores e as estruturas de controle, pois iria lhe confundir mais.&lt;br /&gt;
Após falarmos sobre estruturas de controle retornaremos ao tipo array.&lt;/p&gt;
&lt;/div&gt;

</content>
 </entry>
 
 <entry>
   <id>http://aprenderphp.com.br/artigo/introducao-ao-php</id>
   <title>Introdução ao PHP</title>
   <link type="text/html" href="http://aprenderphp.com.br/artigo/introducao-ao-php"/>
   <updated>2010-02-19T00:00:00-08:00</updated>
   <content type="html">&lt;h2&gt;O que é o PHP&lt;/h2&gt;


&lt;p&gt;PHP é o acrônimo para Hypertext Preprocessor, algo como  pré-processador de hiper texto, uma linguagem de programação muito utilizada  principalmente para o desenvolvimento web. Apesar de ter a versão &lt;a href=&quot;http://pt.wikipedia.org/wiki/PHP-GTK&quot;&gt;PHP-GTK&lt;/a&gt; para ambiente desktop.  No decorrer de nosso aprendizado focaremos no &lt;a href=&quot;http://pt.wikipedia.org/wiki/PHP&quot;&gt;PHP&lt;/a&gt; para desenvolvimento web.&lt;/p&gt;


&lt;h2&gt;O PHP é gratuito?&lt;/h2&gt;


&lt;p&gt;Sim! Para começar o PHP é &lt;a href=&quot;http://pt.wikipedia.org/wiki/C%C3%B3digo_aberto&quot;&gt;open source&lt;/a&gt;, ou  seja, código fonte aberto. Assim para obter o PHP a única coisa que deve fazer  é entrar no &lt;a href=&quot;http://www.php.net/&quot;&gt;site do PHP&lt;/a&gt; e fazer o &lt;a href=&quot;http://www.php.net/downloads.php&quot;&gt;download da versão mais nova&lt;/a&gt;. Pois  com a versão mais recente terá novas funcionalidades além de possíveis bugs  terem sido corrigidos.&lt;/p&gt;


&lt;h2&gt;PHP e o HTML&lt;/h2&gt;


&lt;p&gt;Uma pagina em PHP normalmente possui a extensão &lt;strong&gt;.php&lt;/strong&gt;(dependendo da configuração do  servidor Web). No entanto nestas páginas com a extensão .php pode ser inserido  normalmente o código HTML que você já esta acostumado a desenvolver. E  funcionara da seguinte maneira, sempre que o servidor receber páginas com a  extensão .php ele  saberá que a linguagem  de programação na página, interpretando HTML, e ao encontrar código PHP  interpretar os mesmos, ou vice versa e mais de uma vez pois não importa a  quantidade de vezes que você altera entre código HTML e PHP e se você inicia o  código com um ou com outro. Resumindo podemos escrever HTML e PHP em um arquivo  .php que tudo será interpretado corretamente.&lt;/p&gt;


&lt;h2&gt;O PHP, o Server-side e o Client-side&lt;/h2&gt;


&lt;h3&gt;Client-side&lt;/h3&gt;


&lt;p&gt;É tudo processado no lado do cliente. O &lt;a href=&quot;http://pt.wikipedia.org/wiki/Client_Side_Scripts&quot;&gt;client-side&lt;/a&gt; é  interpretado diretamente pelo browser (navegador) do usuário. Sendo assim ao  acessar uma página web o HTML, CSS e JavaScript são interpretados todos pelo  navegador sem intervenção nenhuma de um servidor. Por isso podemos exibir o  código fonte em nosso browser e visualizar o HTML, CSS e o JavaScript.&lt;/p&gt;


&lt;h3&gt;Server-side&lt;/h3&gt;


&lt;p&gt;O oposto do client-side. Aqui as informações são processadas  por um servidor web que interpretara e retornará o resultado que será exibido  no browser. Sendo assim não é possível visualizar o código de uma aplicação  rodando no &lt;a href=&quot;http://pt.wikipedia.org/wiki/Server-side&quot;&gt;Server-side&lt;/a&gt;.&lt;/p&gt;


&lt;h3&gt;E o PHP?&lt;/h3&gt;


&lt;p&gt;O PHP é processado no servidor por isso é uma linguagem  Server-side. Sendo assim suas aplicações não poderão ser copiadas por outras  pessoas. Todos os processos, rotinas e funções serão feitas no servidor e o  usuário recebera apenas o resultado em seu browser.&lt;/p&gt;


&lt;h2&gt;O que podemos fazer com o PHP&lt;/h2&gt;


&lt;h3&gt;Interação com usuário&lt;/h3&gt;


&lt;p&gt;Primeiramente transformação de sites estáticos, que não  possuem nenhum tipo de interação, em sites dinâmicos, com maior possibilidade  de interação e dinamismo. Por exemplo, com páginas estáticas não podemos ter  uma sessão de comentários em nosso site, em que ao terminar de ler um artigo a  pessoa preencha um campo no formulário e deixar sua opinião e no mesmo estante  a sua opinião estar no site, coisas que podemos realizar com o PHP e um banco  de dados.&lt;/p&gt;


&lt;h3&gt;Facilidade na manutenção&lt;/h3&gt;


&lt;p&gt;Imagine um site que tenha 10 itens no menu do site e cada  item abre mais 5 páginas internas, temos um total de 50 páginas. Agora imagine  a situação: Seu cliente liga para você e pede para inserir mais um item no menu,  lembrando que o menu esta presente em todas as páginas, o que você faria?  Provavelmente abriria as 50 páginas e iria copiando e colando o código do menu  entre elas, trabalho braçal bem chato né?, Além de possíveis erros. Mais  continuemos você inseriu o item no menu, deve ter pensado que o problema acabou,  mais não, no entanto no dia seguinte o item no menu que seu cliente havia  chamado de contato na realidade ele lhe enviou o nome errado pois o pessoal do  marketing descobriu que o nome fale conosco tem maior apelo com os clientes. E  lá vai você novamente para o mesmo trabalho braçal.&lt;/p&gt;


&lt;p&gt;E se fosse noticias que devem ser inseridas 3 vezes ao dia?  Seu cliente mandaria a você, você as incluiria e sempre que houvesse erros você  teria que ir lá e corrigi-las. Além de ter uma chamada com todas as noticias  que você deveria atualizar também e uma chamada com foto na página inicial.  Processo chato para você e o cliente.&lt;/p&gt;


&lt;p&gt;Com o PHP podemos separar no primeiro caso o menu em um  arquivo que ao ser atualizado seria atualizado em todo o site, pois este menu  seria inserido em todas as páginas pelo PHP.&lt;br&gt;
E no segundo caso das noticias  poderíamos criar uma área administrativa em que apenas usuários logados, os  administradores, teriam acesso e poderiam inserir e editar as noticias sem  precisar entrar em contato com você.&lt;/p&gt;


&lt;h3&gt;PHP e o banco de dados&lt;/h3&gt;


&lt;p&gt;O PHP possui acesso a diversos &lt;a href=&quot;http://pt.wikipedia.org/wiki/Banco_de_dados&quot;&gt;bancos de dados&lt;/a&gt;. Sendo  assim você terá uma serie de funções para poder utilizar entre os &lt;a href=&quot;http://www.php.net/manual/pt_BR/refs.database.php&quot;&gt;diversos tipos de  bancos de dados suportados pelo PHP&lt;/a&gt;. Em nosso aprendizado utilizaremos o &lt;a href=&quot;http://www.mysql.com/&quot;&gt;MySQL&lt;/a&gt;.&lt;/p&gt;


&lt;h3&gt;Exemplo de aplicações que podemos desenvolver com o PHP&lt;/h3&gt;


&lt;p&gt;Com o PHP podemos desenvolver coisas como áreas restritas  que necessitem de autenticação, sistemas de comentários para artigos, noticias etc.  Envio de emails, sistemas de noticias, lojas virtuais, redes sociais e qualquer  outra coisa que você possa imaginar.&lt;br&gt;
  Uma aplicação web de grande porte que foi desenvolvida em PHP, foi a &lt;a href=&quot;http://pt.wikipedia.org/wiki/P%C3%A1gina_principal&quot;&gt;Wikipédia&lt;/a&gt;. Nela  você encontra várias coisas como o sistema de autenticação, publicação e edição  de artigos, upload de fotos entre outros.&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <id>http://aprenderphp.com.br/artigo/instalando-o-apache-o-php-e-o-mysql</id>
   <title>Instalando o Apache, o PHP e o MySQL</title>
   <link type="text/html" href="http://aprenderphp.com.br/artigo/instalando-o-apache-o-php-e-o-mysql"/>
   <updated>2010-02-19T00:00:00-08:00</updated>
   <content type="html">&lt;p&gt;Agora que você já conhece um pouco do PHP, iremos aprender a  fazer a instalação para podermos prosseguir com nossos estudos. Como sabemos o  PHP necessita de um servidor para rodar nossas aplicações este servidor no  nosso caso será o apache, também teremos de instalar o próprio PHP e para  nossas aplicações futuras envolvendo banco de dados utilizaremos o MySQL.&lt;/p&gt;


&lt;div class=&quot;observacao&quot;&gt;
  &lt;p&gt;Focaremos nossa instalação do apache, php e mysql no Windows,  esta combinação também é conhecida como WAMP (Windows, Apache, MySQL e PHP).&lt;/p&gt;
  &lt;p&gt;Caso utilize o linux a excelentes artigos pela  internet de como instalar o LAMP (Linux, Apache, MySQL e PHP)&lt;/p&gt;
&lt;/div&gt;


&lt;h2&gt;Sobre o Apache&lt;/h2&gt;


&lt;p&gt;O Apache é um servidor open source, muito estável e seguro,  pois vem sendo desenvolvido há bastante tempo.&lt;br /&gt;
  A idéia de instalarmos um servidor em  nossa maquina local é apenas para o desenvolvimento de nossas aplicações, pois  assim acessaremos o site como se estivéssemos acessando pela Internet. &lt;br /&gt;
No entanto quando o projeto estiver finalizado transferimos nosso projeto para  nossa hospedagem normalmente.&lt;/p&gt;


&lt;h2&gt;Instalando o Apache&lt;/h2&gt;


&lt;p&gt;Baixe a versão mais nova do apache em &lt;a href=&quot;http://www.apache.org/dist/httpd/binaries/win32/&quot;&gt;http://www.apache.org/dist/httpd/binaries/win32/&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;Baixaremos a versão com installer do Windows algo como apache_2.2.xx-win32-x86-no_ssl.msi  onde xx é o número da versão aqui estamos instalando a 2.2.&lt;/p&gt;


&lt;p&gt;Depois de realizado o download inicie a instalação  normalmente ao se deparar com a seguinte tela:&lt;/p&gt;


&lt;p class=&quot;center&quot;&gt;
    &lt;img src=&quot;/img/artigos/instalando-o-apache-o-php-e-o-mysql/instalando-o-apache.jpg&quot; alt=&quot;Instalando o Apache&quot; /&gt;
&lt;/p&gt;


&lt;p&gt;Preencha os dados de acordo com a figura anterior. Ou seja:&lt;/p&gt;


&lt;ul&gt;
  &lt;li&gt;Network  Domain = localdomain&lt;/li&gt;
  &lt;li&gt;Server  Name = localhost&lt;/li&gt;
  &lt;li&gt;Administrator&#39;s  Email Address = seuemail@email.com&lt;/li&gt;
  &lt;li&gt;Mantendo  a opção &amp;quot;for All Users, on port 80, as a Service -- Recommended&amp;quot;  marcado&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Finalizada a instalação você vera o ícone do apache, Apache Service  Monitor, próximo ao seu relógio. Utilizaremos o Apache Service Monitor quando  quisermos reiniciar o nosso servidor.&lt;/p&gt;


&lt;p class=&quot;center&quot;&gt;
    &lt;img src=&quot;/img/artigos/instalando-o-apache-o-php-e-o-mysql/apache-service-monitor.jpg&quot; alt=&quot;Apache Service Monitor&quot; /&gt;
&lt;/p&gt;


&lt;p&gt;Neste ponto temos instalado o nosso servidor, Apache, pare  ver se o apache está instalado e funcionando abra o seu navegador e digite  “localhost” devera ser exibida uma mensagem como a seguir:&lt;/p&gt;


&lt;p class=&quot;center&quot;&gt;
    &lt;img src=&quot;/img/artigos/instalando-o-apache-o-php-e-o-mysql/apache-it-works.jpg&quot; alt=&quot;Apache It works!&quot; /&gt;
&lt;/p&gt;


&lt;p&gt;A mensagem “It works!” significa qua o servidor está  funcionando algo como “ele trabalha!”. Agora para executarmos nossos programas  devemos colocar os arquivos dentro da pasta “htdocs” de nossa instalação do  apache, se você não alterou o caminho da instalação será algo como “C:\Program  Files\Apache Software Foundation\Apache2.2\htdocs” lembrando que é possível  criar diretórios assim os diretórios serão acessados por  HTTP://localhost/meu-diretorio.&lt;/p&gt;


&lt;h2&gt;Instalando o PHP&lt;/h2&gt;


&lt;p&gt;O PHP também pode ser encontrado com o instalador em &lt;a href=&quot;http://www.php.net/downloads.php&quot;&gt;http://www.php.net/downloads.php&lt;/a&gt;.&lt;/p&gt;


&lt;p&gt;Baixe a versão com instalador mais nova, o nome deve ser  algo como php-5.2.x-win32-installer, em que x é alguma revisão da versão 5.2,  se houver versões mais novas que a 5.2 prefira as mais novas.&lt;/p&gt;


&lt;p&gt;Inicie a instalação normalmente quando ele pedir o tipo de servidor  usado escolha o Apache 2.2.x Module, que foi o que acabamos de instalar.&lt;/p&gt;


&lt;p class=&quot;center&quot;&gt;
    &lt;img src=&quot;/img/artigos/instalando-o-apache-o-php-e-o-mysql/instalando-o-php.jpg&quot; alt=&quot;Instalando o PHP selecionando o Apache 2.2.x Module&quot; /&gt;
&lt;/p&gt;


&lt;p&gt;Posteriormente será solicitada a pasta onde estão os  arquivos de configuração do apache , selecione a pasta conf dentro da pasta  onde foi instalado o apache&lt;/p&gt;


&lt;p class=&quot;center&quot;&gt;
    &lt;img src=&quot;/img/artigos/instalando-o-apache-o-php-e-o-mysql/instalando-o-php-1.jpg&quot; alt=&quot;Instalando o PHP selecionando a pasta onde estão os  arquivos de configuração do Apache&quot; /&gt;
&lt;/p&gt;


&lt;p&gt;Finalizada a instalação devemos reiniciar o apache, abra o  Apache Service Monitor e clique em “STOP” em seguida clique em “START”.&lt;/p&gt;


&lt;p class=&quot;center&quot;&gt;
    &lt;img src=&quot;/img/artigos/instalando-o-apache-o-php-e-o-mysql/apache-service-monitor-1.jpg&quot; alt=&quot;Apache Service Monitor STOP&quot; /&gt;
&lt;/p&gt;


&lt;p&gt;Para termos certeza se o PHP está funcionando crie um  arquivo com o nome de info.php e salve o dentro de seu htdocs, com o seguinte  conteúdo:&lt;/p&gt;


&lt;pre class=&quot;brush: php;&quot;&gt;
&amp;lt;?php

phpinfo();

?&amp;gt;
&lt;/pre&gt;


&lt;p&gt;Acesso o seu arquivo através de HTTP://localhost/info.php você verá uma  imagem como a seguir&lt;/p&gt;


&lt;p class=&quot;center&quot;&gt;
    &lt;img src=&quot;/img/artigos/instalando-o-apache-o-php-e-o-mysql/php-info.jpg&quot; alt=&quot;phpinfo()&quot; /&gt;
&lt;/p&gt;


&lt;h2&gt;Instalando o MySQL&lt;/h2&gt;


&lt;p&gt;O Mysql pode ser encontrado para download em &lt;a href=&quot;http://www.mysql.com/downloads/mysql/&quot;&gt;http://www.mysql.com/downloads/mysql/&lt;/a&gt;.&lt;/p&gt;


&lt;p&gt;Baixe a versão mais recente com o instalador do  Windos(.msi).&lt;/p&gt;


&lt;p&gt;Novamente inicie a instalação normalmente.&lt;/p&gt;


&lt;p&gt;Em um ponto ele solicita o número da porta, mantenha o  padrão se for o caso, e marque a opção “Add Firewall exception for this port”  para garantir que o firewall não impedira o MySQL de funcionar.&lt;/p&gt;


&lt;p class=&quot;center&quot;&gt;
    &lt;img src=&quot;/img/artigos/instalando-o-apache-o-php-e-o-mysql/instalando-o-mysql.jpg&quot; alt=&quot;Instalando o MySQL&quot; /&gt;
&lt;/p&gt;


&lt;p&gt;Em um ponto a frente na instalação marque a opção &amp;quot;Include  Bin Directory in Windows PATH&amp;quot; para poder ser possível executar o mySQL  apartir do prompt.&lt;/p&gt;


&lt;p class=&quot;center&quot;&gt;
    &lt;img src=&quot;/img/artigos/instalando-o-apache-o-php-e-o-mysql/instalando-o-mysql-1.jpg&quot; alt=&quot;Instalando o MySQL&quot; /&gt;
&lt;/p&gt;


&lt;p&gt;Será solicitada uma senha para acesso ao banco de dados,  aqui para o usuário “root”, caso não queira definir senha alguma desmarque o  campo &amp;quot;Modify Security Settings&amp;quot;.&lt;/p&gt;


&lt;p class=&quot;center&quot;&gt;
    &lt;img src=&quot;/img/artigos/instalando-o-apache-o-php-e-o-mysql/instalando-o-mysql-2.jpg&quot; alt=&quot;Instalando o MySQL&quot; /&gt;
&lt;/p&gt;


&lt;p&gt;Estas são as configurações do MySQL o resto da instalação  não a duvidas.&lt;/p&gt;


&lt;h2&gt;Configurações Finais&lt;/h2&gt;


&lt;h3&gt;Configurando o PHP para o ambiente de desenvolvimento&lt;/h3&gt;


&lt;p&gt;Agora temos que configurar o nosso PHP, para poder acessar o  Banco de dados, no nosso caso o MySQL através das extensões. Vá em meu  computador &amp;gt; Painel de controle &amp;gt; adicionar ou remover programas encontre  o PHP e clique em alterar em seguida clique em change não altere o que você já  configurou previamente. Chegando na etapa de extensões selecione “&lt;strong&gt;MySQL&lt;/strong&gt;” e a opção “Will be installed on  local hard drive” realize a mesma coisa com as seguintes extensões “&lt;strong&gt;GD2&lt;/strong&gt;” e “&lt;strong&gt;PDO&lt;/strong&gt;” ambas extensões bastante utilizadas no PHP.&lt;/p&gt;


&lt;p class=&quot;center&quot;&gt;
    &lt;img src=&quot;/img/artigos/instalando-o-apache-o-php-e-o-mysql/adicionando-extensoes-ao-php.jpg&quot; alt=&quot;Adicionando extensões ao PHP&quot; /&gt;
&lt;/p&gt;


&lt;p class=&quot;center&quot;&gt;
    &lt;img src=&quot;/img/artigos/instalando-o-apache-o-php-e-o-mysql/adicionando-extensoes-ao-php-1.jpg&quot; alt=&quot;Adicionando extensões ao PHP&quot; /&gt;
&lt;/p&gt;


&lt;p&gt;Em seguida encontre o arquivo php.ini onde foi instalado o  seu php e procure pelos seguintes itens e altere seus valores, mantendo os  assim:&lt;/p&gt;


&lt;ul&gt;
  &lt;li&gt;short_open_tag = On&lt;/li&gt;
  &lt;li&gt;display_errors = On&lt;/li&gt;
  &lt;li&gt;error_reporting  = E_ALL | E_STRICT&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Lembrando de alterar os valores reais pois o que está  precedido de ; são comentários e não são processados.&lt;/p&gt;


&lt;p&gt;Os comandos que alteremos são respectivamente para aceitar o  uso de tags curtas do PHP você saberá do que se trata mais a frente, esta opção  é apenas por uma questão de compatibilidade de códigos de terceiros. Em seguida  para mostrar os erros, afinal estamos em modo de desenvolvimento, em modo de  produção &lt;strong&gt;nunca &lt;/strong&gt;exiba os erros  diretamente para o usuário. E por último para reportamos todos os tipos de  erros.&lt;/p&gt;


&lt;h3&gt;Configurando o Apache para o ambiente de desenvolvimento&lt;/h3&gt;


&lt;p&gt;No diretório onde foi instalado o apache  encontre a pasta “conf” e o arquivo “httpd.conf “ busque por “DirectoryIndex”  defina os itens que deverão ser buscado ao ser acessado uma pasta ficando  assim:&lt;/p&gt;


&lt;pre class=&quot;brush: plain;&quot;&gt;
&amp;lt;IfModule dir_module&amp;gt;
    DirectoryIndex index.html default.html index.htm default.htm index.php default.php
&amp;lt;/IfModule&amp;gt;
&lt;/pre&gt;


&lt;h4&gt;Ativando o mod_rewrite&lt;/h4&gt;


&lt;p&gt;O mod_rewrite resumidamente é um módulo do apache que nos  permite a reescrita de urls, apenas o ativaremos neste ponto, para quando for necessária  a reescrita de url não seja necessário nenhuma configuração posterior do  apache.&lt;/p&gt;


&lt;p&gt;Procure pela linha “LoadModule rewrite_module  modules/mod_rewrite.so” se estiver comentada, com um # antes, descomente a ,  retirando o #. Busque também por AllowOverride e defina como All.&lt;/p&gt;


&lt;h3&gt;Configurando o MySQL para o ambiente de desenvolvimento&lt;/h3&gt;


&lt;p&gt;O MySQL não tem o que ser configurado tudo já foi  previamente definido na instalação. O que podemos fazer apenas é baixar as  ferramentas no próprio site do MySQL &lt;a href=&quot;http://dev.mysql.com/downloads/gui-tools/5.0.html&quot;&gt;http://dev.mysql.com/downloads/gui-tools/5.0.html&lt;/a&gt;.&lt;/p&gt;


&lt;h2&gt;Finalizando&lt;/h2&gt;


&lt;p&gt;Após termos configurado tudo, reiniciamos novamente o  Apache. E para testarmos nossa conexão do PHP com o banco de dados criamos um  arquivo em nosso htdocs com o nome de banco.php com o seguinte conteúdo:&lt;/p&gt;


&lt;pre class=&quot;brush: php;&quot;&gt;
&amp;lt;?php

$link = mysql_connect(&#39;localhost&#39;, &#39;root&#39;, &#39;&#39;);

if (!$link) {
    die(&#39;Não foi possível conectar: &#39; . mysql_error());
}
echo &#39;Conexão bem sucedida&#39;;

mysql_close($link);

?&amp;gt;
&lt;/pre&gt;


&lt;p&gt;Caso tenha alterado a senha de seu banco de dados a defina  aqui em &lt;code&gt;$link = mysql_connect(&#39;localhost&#39;, &#39;root&#39;, &#39;&lt;strong&gt;sua senha aqui&lt;/strong&gt;&#39;);&lt;/code&gt;&lt;/p&gt;


&lt;p&gt;Acesse este programa através de &lt;a href=&quot;http://localhost/banco.php&quot;&gt;http://localhost/banco.php&lt;/a&gt; e você  recebera uma mensagem dizendo se foi possível ou não realizar a conexão com o  banco de dados.&lt;/p&gt;


&lt;h2&gt;E se eu não conseguir instalar? Ou simplesmente não quiser instalar isso  tudo.&lt;/h2&gt;


&lt;p&gt;Não tem problema. Existem soluções que englobam toda a  instalação que acabamos de realizar em apenas uma instalação mais simples como  é o caso do &lt;a href=&quot;http://www.apachefriends.org/pt_br/xampp.html&quot;&gt;xampp&lt;/a&gt;.&lt;/p&gt;


&lt;p&gt;No entanto prefira a instalação manual pois você estará  aprendendo um pouco mais quando tiver que alterar um arquivo de configuração  seja ele do PHP ou do próprio Apache, mesmo que em ambiente de produção, onde  você hospedar seu site, dificilmente terá controle total sobre tais  configurações.&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <id>http://aprenderphp.com.br/artigo/comecando-a-programar-em-php</id>
   <title>Começando a programar em PHP</title>
   <link type="text/html" href="http://aprenderphp.com.br/artigo/comecando-a-programar-em-php"/>
   <updated>2010-02-19T00:00:00-08:00</updated>
   <content type="html">&lt;h2&gt;Inicio da programação em PHP&lt;/h2&gt;


&lt;p&gt;Para começarmos a programar em PHP primeiro abra o seu &lt;a href=&quot;http://pt.wikipedia.org/wiki/Editor_de_texto&quot;&gt;editor de texto&lt;/a&gt; ou &lt;a href=&quot;http://pt.wikipedia.org/wiki/Ambiente_de_Desenvolvimento_Integrado&quot;&gt;IDE&lt;/a&gt; preferido, &lt;a href=&quot;http://www.smashingmagazine.com/2009/02/11/the-big-php-ides-test-why-use-oneand-which-to-choose/&quot;&gt;analise  entre as melhores IDE para PHP&lt;/a&gt; e  &lt;a href=&quot;http://spreadsheets.google.com/ccc?key=pV8XyUSUOM7ET07rn4n7NYA&quot;&gt;tabela  comparativo entre as melhores IDE para PHP&lt;/a&gt; ambos em inglês. Uma boa saida é o &lt;a href=&quot;http://www.aptana.org/&quot;&gt;Aptana&lt;/a&gt; e o &lt;a href=&quot;http://www.aptana.org/php&quot;&gt;plugin para desenvolvimento em PHP&lt;/a&gt; mais  você pode utilizar o seu preferido.&lt;/p&gt;


&lt;h2&gt;Delimitadores de código PHP&lt;/h2&gt;


&lt;p&gt;Assim como o HTML temos as tags no PHP temos os  delimitadores de código, que são &lt;code&gt;&amp;lt;?php&lt;/code&gt; e &lt;code&gt;?&amp;gt;&lt;/code&gt; respectivamente a tag de  abertura e a tag de fechamento, em que o código deve ser inserido. Veja o  exemplo a seguir:&lt;/p&gt;


&lt;pre class=&quot;brush: php;&quot;&gt;
&amp;lt;?php

// Código PHP aqui!!!

?&amp;gt;
&lt;/pre&gt;


&lt;div class=&quot;observacao&quot;&gt;
  &lt;p&gt;Além dos delimitadores de código &lt;code&gt;&amp;lt;?php&lt;/code&gt; e &lt;code&gt;?&amp;gt;&lt;/code&gt; todas as suas páginas devem possuir a extensão .php por exemplo: meu-primeiro-programa.php&lt;/p&gt;
&lt;/div&gt;


&lt;p&gt;Ou ainda como mencionado no artigo anterior sobre o que é o PHP podemos &lt;strong&gt;misturar o PHP com o HTML&lt;/strong&gt; como pode ser observado no exemplo a seguir.&lt;/p&gt;


&lt;pre class=&quot;brush: php; html-script: true&quot;&gt;
&amp;lt;?php

// Sim também podemos ter código PHP antes do DocType.

?&amp;gt;
&amp;lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&amp;gt;
&amp;lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&amp;gt;
&amp;lt;head&amp;gt;
&amp;lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot; /&amp;gt;
&amp;lt;title&amp;gt;Titulo da minha página&amp;lt;/title&amp;gt;
&amp;lt;?php

// Código PHP aqui dentro do head.

?&amp;gt;
&amp;lt;/head&amp;gt;

&amp;lt;body&amp;gt;
&amp;lt;?php

// Código PHP aqui dentro do body!!!

?&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
&amp;lt;?php

// Código PHP aqui até depois de fecharmos a tag html!

?&amp;gt;
&lt;/pre&gt;


&lt;p&gt;Como você pode perceber podemos escrever código PHP misturado com o HTML em qualquer parte do código. Além do exemplo que eu mostrei imagine que você queira gerar o titulo da sua página pelo PHP dinamicamente o que você faria? Isso mesmo colocaria as tags do PHP dentro da tag title e realizaria uma rotina para gerar o titulo dinamicamente.&lt;/p&gt;


&lt;div class=&quot;observacao&quot;&gt;
  &lt;p&gt;Caso você já tenha programado algo em PHP ou baixado algum  script em PHP talvez já tenha se deparado com as tags respectivamente de  abertura e fechamento assim:&lt;/p&gt;
  &lt;ol&gt;
    &lt;li&gt;&lt;code&gt;&amp;lt;?   ?&amp;gt;&lt;/code&gt;&lt;/li&gt;
    &lt;li&gt;&lt;code&gt;&amp;lt;% %&amp;gt;&lt;/code&gt;&lt;/li&gt;
    &lt;li&gt;&lt;code&gt;&amp;lt;script language=”PHP”&amp;gt; &amp;lt;/script&amp;gt;&lt;/code&gt;&lt;/li&gt;
  &lt;/ol&gt;
  &lt;p&gt;O mais utilizado é o primeiro caso, no entanto &lt;strong&gt;não o utilize&lt;/strong&gt;. Pois com o avanço do PHP  este tipo de escrita pode ser desabilitado e ainda pode ocorrer a possibilidade  de seu servidor web não aceitar este tipo de tag.&lt;/p&gt;
  &lt;p&gt;Por isso prefira sempre as tags &lt;code&gt;&amp;lt;?php&lt;/code&gt; e &lt;code&gt;?&amp;gt;&lt;/code&gt;.&lt;/p&gt;
&lt;/div&gt;




&lt;h2&gt;Conceito de variável&lt;/h2&gt;


&lt;p&gt;Variáveis como você já deve estar imaginando apenas pelo  nome é tudo aquilo que é sujeito a &lt;strong&gt;variações&lt;/strong&gt;,  que é &lt;strong&gt;incerto&lt;/strong&gt;, &lt;strong&gt;instável&lt;/strong&gt; ou &lt;strong&gt;inconstante&lt;/strong&gt;,  ou seja, pode &lt;strong&gt;mudar durante sua  existência&lt;/strong&gt;. Vamos a uma analogia para entendermos o conceito de  variáveis.  Imagine a seguinte situação:&lt;br /&gt;
  Joãozinho mora na casa de seus pais desde que nasceu e passa a maior parte do  dia em seu quarto. Com o passar dos anos o quarto de Joãozinho foi mudando,  seus brinquedos foram trocados por um computador, seu berço foi trocado por uma  cama, seu guarda-roupa de criança foi trocado por um de adulto, as paredes  foram pintadas de cores diferentes e Joãozinho ganhou uma televisão em seu  quarto.&lt;br /&gt;
  Como você já deve ter imaginado a nossa variável aqui foi o quarto de  Joãozinho, que com o passar do tempo foi variando seu conteúdo.&lt;/p&gt;


&lt;p&gt;  &lt;p&gt;Trazendo o conceito de variável ao PHP e a nossas páginas de  internet. Voltemos ao exemplo anterior em que misturamos PHP e HTML. O conteúdo  que ficaria dentro da tag body gerado pelo PHP seria uma variável, que dependo  da página que estaríamos acessando este valor, ou seja, ele seria variável. A  página inicial teria um valor naquela variável e página de contato já teria um  valor diferente em sua variável.&lt;/p&gt;
  &lt;h2&gt;As variáveis no PHP&lt;/h2&gt;
  &lt;p&gt;Agora que você já possui um conceito de variável iremos ver  como criar nossas variáveis no PHP. As variáveis servem para armazenar dados  que podem ser utilizado em qualquer parte do programa. Para criar uma variável  em PHP você deve seguir algumas regras, são todas bem fáceis de se acostumar,  veja a seguir:&lt;/p&gt;
  &lt;ol&gt;
    &lt;li&gt;As variáveis são representadas por um cifrão ($)  seguido pelo nome da variável&lt;/li&gt;
    &lt;li&gt;O PHP é &lt;a href=&quot;http://pt.wikipedia.org/wiki/Case_sensitive&quot;&gt;case sensitive&lt;/a&gt;, ou seja,  ele diferencia minúsculas de maiúsculas. Sendo então &lt;code&gt;$nome&lt;/code&gt; diferente de &lt;code&gt;$Nome&lt;/code&gt; e  &lt;code&gt;$NoMe&lt;/code&gt;&lt;/li&gt;
    &lt;li&gt;Nomes de variáveis devem ser iniciados apenas  com uma letra ou _ (sublinhado) e podem ser seguido de letras ou algarismos, ou  seja, números podem aparecer em outras posições exceto na primeira&lt;/li&gt;
    &lt;li&gt;Nunca utilize caracteres especiais em nome de  uma variável como acentos (é í ó) cedilha (ç) &lt;/li&gt;
  &lt;/ol&gt;&lt;/p&gt;

&lt;h3&gt;Exemplo de variáveis validas no PHP&lt;/h3&gt;


&lt;p&gt;Veja a seguir exemplos de nomes válidos para variáveis,  baseadas nas regras que estudamos anteriormente.&lt;/p&gt;


&lt;pre class=&quot;brush: php;&quot;&gt;
&amp;lt;?php

$nome = &#39;Mauro George&#39;;
$nascimento = &#39;06/09/1989&#39;;
$sobre_nome = &#39;Oliveira Tavares&#39;;

?&amp;gt;
&lt;/pre&gt;


&lt;h3&gt;Exemplo de variáveis invalidas no PHP&lt;/h3&gt;


&lt;p&gt;Agora alguns nomes de variáveis invalidas no PHP que &lt;strong&gt;não&lt;/strong&gt; devem ser utilizadas.&lt;/p&gt;


&lt;pre class=&quot;brush: php;&quot;&gt;
&amp;lt;?php

$20_anos_e_nome = &#39;Mauro George&#39;;
$ nascimento = &#39;06/09/1989&#39;;
$*este_é_meu_sobrenome = &#39;Oliveira Tavares&#39;;

?&amp;gt;
&lt;/pre&gt;


&lt;p&gt;Como você já deve ter imaginado o sinal de &lt;code&gt;=&lt;/code&gt; (igual) é  utilizado para atribuir um valor a variável, aprenderemos mais sobre eles  quando chegarmos em operadores de atribuição.&lt;/p&gt;


&lt;h2&gt;Separação de instruções&lt;/h2&gt;


&lt;p&gt;Você também deve ter reparado no exemplo anterior que depois  definirmos um valor a variável terminamos utilizando o sinal de &lt;code&gt;;&lt;/code&gt; (ponto e  virgula). Este é o separador de instruções do PHP, ou seja, sempre que  definirmos uma variável ou imprimirmos algo na tela devemos utilizar o &lt;code&gt;;&lt;/code&gt;.&lt;/p&gt;


&lt;h2&gt;Enviando resultados ao browser, o uso do comando echo&lt;/h2&gt;


&lt;p&gt;Você deve estar imaginando acabei de criar varias variáveis  mais como que eu faço para exibir o conteúdo que guardei em cada uma delas? E  neste ponto que aprenderemos exibir o valor de nossas variáveis na tela. Mais  primeiro exibiremos o mais clichê de todas as linguagens de programação o  famoso “Hello World”.&lt;/p&gt;


&lt;p&gt;Aconselho a partir deste ponto criar uma pasta com o nome de &lt;strong&gt;estudos&lt;/strong&gt; em seu diretório HTDOCS e vá  testando os exemplos que serão mostrados a seguir.&lt;/p&gt;


&lt;p&gt;Não se esquecendo de salvar os arquivos com a extensão .php&lt;/p&gt;


&lt;pre class=&quot;brush: php;&quot;&gt;
&amp;lt;?php

echo &#39;Hello World&#39;;

?&amp;gt;
&lt;/pre&gt;


&lt;p&gt;Repare que ainda não exibimos os dados de uma variável  apenas exibimos um texto comum.&lt;/p&gt;


&lt;h3&gt;Exibindo dados das variáveis no PHP&lt;/h3&gt;


&lt;p&gt;Agora iremos exibir os valores de nossas variáveis no  browser utilizando o PHP, para isso utilizaremos as variáveis que criamos  anteriormente.&lt;/p&gt;


&lt;pre class=&quot;brush: php;&quot;&gt;
&amp;lt;?php

$nome = &#39;Mauro George&#39;;
$nascimento = &#39;06/09/1989&#39;;
$sobre_nome = &#39;Oliveira Tavares&#39;;


echo $nome;
echo $sobre_nome;
echo $nascimento;

?&amp;gt;
&lt;/pre&gt;


&lt;p&gt;Você deve ter percebido que como exibimos varias variáveis quando terminou o dado de uma ele “colou” com o dado da próxima variável mais isto será concertado quando chegarmos a concatenação de strings, mais neste ponto o interessante é vermos que conseguimos exibir o valor da variável.&lt;/p&gt;


&lt;h3&gt;Posso exibir dados das variáveis no PHP misturado com o HTML?&lt;/h3&gt;


&lt;p&gt;SIM! Como o PHP se mistura ao HTML podemos exibir os dados em conjuntos vejam um exemplo pratico.&lt;/p&gt;


&lt;pre class=&quot;brush: php; html-script: true&quot;&gt;
&amp;lt;?php

$titulo = &#39;Aqui vai o titulo da minha página&#39;;
$css = &#39;&amp;lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;css/estilos.css&quot; /&amp;gt;&#39;;
$conteudo = &#39;Aqui é o conteudo mais como não tenho nenhum... &amp;lt;br /&amp;gt; vai apenas um&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt; &amp;lt;strong&amp;gt;Hello World&amp;lt;/strong&amp;gt;&#39;;

?&amp;gt;
&amp;lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&amp;gt;
&amp;lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&amp;gt;
&amp;lt;head&amp;gt;
&amp;lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot; /&amp;gt;
&amp;lt;title&amp;gt;&amp;lt;?php echo $titulo; ?&amp;gt;&amp;lt;/title&amp;gt;

&amp;lt;?php
echo $css;
?&amp;gt;
&amp;lt;/head&amp;gt;

&amp;lt;body&amp;gt;
&amp;lt;?php

echo $conteudo;

?&amp;gt;

&amp;lt;p&amp;gt;Eu posso repetir o valor da variavel sempre que eu quiser sabia? Veja aqui o nosso titulo denovo &quot;&amp;lt;?php echo $titulo; ?&amp;gt;&quot;&amp;lt;/p&amp;gt;
&amp;lt;p&amp;gt;E não necessariamente deveria imprimir $titulo apenas porque eu a declarei primeiro poderia imprimir $css antes e depois $titulo ou qualquer uma variavel isso vai de acorodo com sua necessidade&amp;lt;/p&amp;gt;
&amp;lt;p&amp;gt;Agora irei exibir $conteudo novamente olhe ela ai&amp;lt;/p&amp;gt;
&amp;lt;p&amp;gt;&amp;lt;?php echo $conteudo; ?&amp;gt;&amp;lt;/p&amp;gt;

&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/pre&gt;


&lt;p&gt;Repare que além do PHP esta misturado ao HTML também a tags  de HTML no valor da minha variável em PHP.&lt;/p&gt;


&lt;p&gt;As variáveis podem ser exibidas sempre que necessário na  tela, veja que repeti algumas variáveis mais de uma vez.&lt;/p&gt;


&lt;p&gt;E ainda independente da ordem de declaração das variáveis  elas podem ser chamadas a sua escolha. Mesmo eu tendo declarado &lt;code&gt;$titulo&lt;/code&gt;, &lt;code&gt;$css&lt;/code&gt; e  &lt;code&gt;$conteudo&lt;/code&gt; eu poderia exibir na tela primeiro &lt;code&gt;$conteudo&lt;/code&gt; e &lt;code&gt;$css&lt;/code&gt; e por ultimo  exibir &lt;code&gt;$titulo&lt;/code&gt; a ordem de exibição sou eu que faço.&lt;/p&gt;


&lt;p&gt;No entanto o seguinte exemplo geraria um erro:&lt;/p&gt;


&lt;pre class=&quot;brush: php;&quot;&gt;
&amp;lt;?php

echo $nome;
echo $sobre_nome;
echo $nascimento;

$nome = &#39;Mauro George&#39;;
$nascimento = &#39;06/09/1989&#39;;
$sobre_nome = &#39;Oliveira Tavares&#39;;

?&amp;gt;
&lt;/pre&gt;


&lt;p&gt;Você sabe me dizer o por quê? Se você respondeu que devido a  tentarmos exibir uma variável sem antes declará-la você acertou. Ou seja, antes  de exibirmos qualquer dado antes devemos o ter declarado previamente.&lt;/p&gt;


&lt;h2&gt;Comentários no PHP&lt;/h2&gt;


&lt;p&gt;O PHP nos fornece um suporte a comentários que vem a ser  muito útil quando estamos desenvolvendo sistemas. Temos os seguintes tipos de  comentários no PHP:&lt;/p&gt;


&lt;ol&gt;
  &lt;li&gt;&lt;code&gt;//&lt;/code&gt; comentário de uma linha apenas&lt;/li&gt;
  &lt;li&gt;&lt;code&gt;#&lt;/code&gt; também comentário de uma linha apenas&lt;/li&gt;
  &lt;li&gt;&lt;code&gt;/* */&lt;/code&gt; comentário de múltiplas linhas&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;Veja todos eles em funcionamento abaixo:&lt;/p&gt;


&lt;pre class=&quot;brush: php;&quot;&gt;
&amp;lt;?php

// Comentario de uma linha apenas
# Outro modo de escrever um comentario de uma linha

/* Comentario de varias linhas com
 este podemos quebra linha e escrever
 quantas linhas quisermos.
*/

// Apenas um nome
$nome = &#39;Mauro George&#39;;
# A data de nascimento de uma pessoa
$nascimento = &#39;06/09/1989&#39;;
// O Sobre nome de uma pessoa
$sobre_nome = &#39;Oliveira Tavares&#39;;

/* Aqui exibimos o nome
o sobre nome e a data de nascimento de
uma pessoa
*/
echo $nome;
echo $sobre_nome;
echo $nascimento;

?&amp;gt;
&lt;/pre&gt;


&lt;h2&gt;Constantes no PHP&lt;/h2&gt;


&lt;p&gt;Como você já deve ter imaginado as constantes no PHP guardam  valores que nunca serão alterados.  Diferente das variáveis que possuem valores  que podem ser alterados, sendo assim após definida uma constante ela não pode  ser alterada ou removida.&lt;/p&gt;


&lt;p&gt;Para definirmos uma constante utilizamos o comando &lt;code&gt;define();&lt;/code&gt; que tem sua sintaxe a seguir:&lt;/p&gt;


&lt;p&gt;&lt;code&gt;define( ‘NOME_DA_CONSTANTE’, ‘VALOR DA CONSTANTE’ );&lt;/code&gt;&lt;/p&gt;


&lt;p&gt;O nome de uma constante tem a mesma regra de qualquer  identificador PHP, ou seja, as mesmas regras de nomes de variáveis exceto pelo  fato de constantes &lt;strong&gt;não&lt;/strong&gt; iniciarem o  nome com cifrão ($).&lt;br /&gt;
  Veja um exemplo a seguir em que utilizamos uma constante.&lt;/p&gt;


&lt;pre class=&quot;brush: php; html-script: true&quot;&gt;
&amp;lt;?php
// Defino o titulo da minha página
$titulo = &#39;Exemplo utilizando Constantes&#39;;
// Apenas um nome
$nome = &#39;Mauro George&#39;;
// A data de nascimento de uma pessoa
$nascimento = &#39;06/09/1989&#39;;
// O Sobre nome de uma pessoa
$sobre_nome = &#39;Oliveira Tavares&#39;;
// Defino o ESTADO da pessoa que é uma constante
define( &#39;ESTADO&#39;, &#39;Rio de Janeiro&#39; );

?&amp;gt;
&amp;lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&amp;gt;
&amp;lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&amp;gt;
&amp;lt;head&amp;gt;
&amp;lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot; /&amp;gt;
&amp;lt;title&amp;gt;&amp;lt;?php echo $titulo; ?&amp;gt;&amp;lt;/title&amp;gt;
&amp;lt;/head&amp;gt;

&amp;lt;body&amp;gt;
&amp;lt;p&amp;gt;&amp;lt;?php echo $nome; ?&amp;gt; &amp;lt;?php echo $sobre_nome; ?&amp;gt;, nascido em &amp;lt;?php echo $nascimento; ?&amp;gt; nasceu no &amp;lt;?php echo ESTADO; ?&amp;gt;&amp;lt;/p&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/pre&gt;


&lt;p&gt;Agora que você entendeu o funcionamento de uma constante  deve estar se perguntando: qual a diferença real entre variáveis e constantes?&lt;br /&gt;
  Acompanhe o exemplo a seguir e observe que variáveis podem ter seus valores  modificados durante a execução de uma página, já as constantes seus valores  nunca podem ter seus valores alterados.&lt;/p&gt;


&lt;pre class=&quot;brush: php; html-script: true&quot;&gt;
&amp;lt;?php
// Defino o titulo da minha página
$titulo = &#39;Exemplo utilizando Constantes&#39;;
// Apenas um nome
$nome = &#39;Mauro George&#39;;
// A data de nascimento de uma pessoa
$nascimento = &#39;06/09/1989&#39;;
// O Sobre nome de uma pessoa
$sobre_nome = &#39;Oliveira Tavares&#39;;
// Defino o ESTADO da pessoa que é uma constante
define( &#39;ESTADO&#39;, &#39;Rio de Janeiro&#39; );

?&amp;gt;
&amp;lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&amp;gt;
&amp;lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&amp;gt;
&amp;lt;head&amp;gt;
&amp;lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot; /&amp;gt;
&amp;lt;title&amp;gt;&amp;lt;?php echo $titulo; ?&amp;gt;&amp;lt;/title&amp;gt;
&amp;lt;/head&amp;gt;

&amp;lt;body&amp;gt;
&amp;lt;p&amp;gt;&amp;lt;?php echo $nome; ?&amp;gt; &amp;lt;?php echo $sobre_nome; ?&amp;gt;, nascido em &amp;lt;?php echo $nascimento; ?&amp;gt; nasceu no &amp;lt;?php echo ESTADO; ?&amp;gt;&amp;lt;/p&amp;gt;
&amp;lt;?php
/**
 * Redefino os valores das seguintes variaveis
 *
 */
$nome = &#39;Jéssica&#39;;
$nascimento = &#39;12/07/1990&#39;;
$sobre_nome = &#39;Monteiro da Silva&#39;;
define( &#39;ESTADO&#39;, &#39;São Paulo&#39; );

?&amp;gt;
&amp;lt;p&amp;gt;&amp;lt;?php echo $nome; ?&amp;gt; &amp;lt;?php echo $sobre_nome; ?&amp;gt;, nascido em &amp;lt;?php echo $nascimento; ?&amp;gt; nasceu no &amp;lt;?php echo ESTADO; ?&amp;gt;&amp;lt;/p&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/pre&gt;


&lt;div class=&quot;observacao&quot;&gt;
  &lt;p&gt;Por padrão sempre escreva o nome de constantes em maiúsculo  e separado por _ (sublinhado). Exemplo:&lt;/p&gt;
  &lt;p&gt;MINHA_CONSTANTE, UMA_CONSTANTE, CONSTANTE&lt;/p&gt;
  &lt;p&gt;E não se esqueça que constantes não são iniciadas com o  cifrão ($).&lt;/p&gt;
&lt;/div&gt;

</content>
 </entry>
 

</feed>