Um dos primeiros e mais importante conceitos que aprendemos quando estudamos programação é o de estruturas de controle de fluxo. Como o próprio nome sugere, são estruturas utilizadas para modificar estrategicamente o funcionamento da aplicação em certo ponto, fazendo com que decisões sejam tomadas e a partir delas um trecho de código seja executado.

Como usar if, switch, for, while e foreach no PHP

Essas estruturas estão divididas em dois grupos: condicionais e de repetição. As estruturas condicionais são utilizadas para avaliar certa condição e de acordo com o resultado, executar uma rotina específica. As de repetição, por sua vez, funcionam executando um trecho de código repetidas vezes com base no resultado da avaliação de uma condição preestabelecida.

Apesar de o conceito ser o mesmo ou muito semelhante para todas as linguagens, a sintaxe varia em cada caso. Por isso, é preciso conhecer além da definição teórica geral, a sintaxe de funcionamento de cada operador na linguagem que se deseja utilizar.

Neste artigo, apresentarei os operadores IF, SWITCH, FOR, WHILE e FOREACH na linguagem PHP

if

O operador IF é utilizado para avaliar o valor de uma condição booleana, ou seja, que pode assumir apenas dois valores distintos: VERDADEIRO (true) ou FALSO (false). IF significa SE em português e a estrutura funciona da seguinte forma: SE (condição) ENTÃO (faça algo). Entretanto, o ENTÃO não é utilizado no PHP, bastando apenas usar o IF, conforme o modelo da Listagem 1:

Listagem 1: Sintaxe básica de uso do IF

if(condição)
{
  //código
}

As chaves são utilizadas para delimitar um bloco de código, caso fosse necessário executar apenas uma linha, as chaves poderiam ser removidas. Porém, é mais seguro utilizá-las, pois nunca se sabe quando será preciso inserir mais uma linha no código.

O operador IF pode ser complementado com o operador ELSE, que significa SENÃO. Ou seja, SE uma condição for atendida, fazer uma coisa. SENÃO, fazer outra. O ELSE só precisa ser utilizado quando houver algo específico a ser feito se a condição não for atendida. A sintaxe de uso é mostrada na Listagem 2.

Listagem 2: Sintaxe de uso do IF-ELSE

if(condição)
{
  //código 1
}
else
{ 
//código 2
}

Caso existam várias condições específicas a serem validadas, podem ser inseridos outros IFs após o else, conforme a Listagem 3.

Listagem 3: Sintaxe de uso do IF-ELSE IF

if(condição1)
{ 
  //código 1
}
else if(condição2)
{
  //código 2
}
else
{
  //código 3
}

No código acima, se a condição 1 não fosse atendida, a segunda seria avaliada. Se nenhuma das duas primeiras fosse válida, o código do bloco ELSE seria executado.

A listagem a seguir mostra um exemplo de uso operador IF completo na prática.

Listagem 4: Exemplo de uso do IF

if($hora <= 12)
echo “Está de manhã”;
else if($hora > 12 && $hora <= 18)
  echo “Está de tarde”;
else
  echo “Está de noite”; 

Na listagem acima são feitas algumas avaliações do valor da variável $hora que teoricamente armazena a hora atual. Dependendo do seu valor, uma mensagem específica é exibida.

saiba mais Saiba mais sobre if / else no PHP

switch

A grosso modo, pode-se dizer que o SWITCH funciona como a união de vários IF, porém, de forma mais compacta e organizada. Imagine, por exemplo, uma situação em que precise ser lida um valor inserido pelo usuário. Esse valor, por sua vez, pode assumir cinco valores. Seria necessário escrever cinco IFs seguidos, para avaliar todas as possibilidades. Vejamos como ficaria isso na prática.

Listagem 5: Verificação de várias possibilidades com IF

if($opcao == 1)
  //código 1
else if($opcao == 2)
  //código 2
else if($opcao == 3)
  //código 3
else if($opcao == 4)
  //código 4
else if($opcao == 5)
  //código 5
else
  //nenhuma das opções 

Esse código poderia ser bastante reduzido utilizando o operador SWITCH, que avalia uma expressão com base em vários valores predeterminados. Se a expressão não possuir nenhum dos valores válidos, um valor padrão pode ser definido. Abaixo temos a sintaxe básica dessa estrutura.

Listagem 6: Sintaxe básica do SWITCH

switch(expressão)
{
case valor1:
//código 1
break;
case valor2:
//código 2
break;
default:
//código padrão
break;
}

Como se vê, em um único bloco são avaliadas varas possibilidades. O comando break é necessário ao final de cada bloco de código (que não precisa ser cercado por chaves) para que as demais opções sejam descartadas, caso uma seja atendida.

O exemplo acima poderia então ser reescrito da seguinte forma:

Listagem 7: Verificação de várias possibilidades com SWITCH

switch($opcao)
{
case 1:
//código 1
break;
case 2:
//código 2
break;
case 3:
//código 3
break;
case 4:
//código 4
break;
case 5:
//código 5
break;
default:
//nenhuma das opções
break;
}

saiba mais Saiba mais sobre switch / case no PHP

while

O WHILE já se enquadra nas estruturas de repetição. Esse operador é utilizado para executar um bloco de código várias vezes, enquanto uma determinada condição for atendida. Traduzindo, esta estrutura funciona da seguinte forma: ENQUANTO (condição for atendida) FAÇA ALGO. Onde FAÇA ALGO pode ser um ou vários comandos PHP.

A sintaxe básica de uso dessa estrutura é apresentada abaixo.

Listagem 8: Sintaxe básica do WHILE

while(condição)
{
  //comandos
}

Nesse caso, a condição avaliada também deve ser booleana, podendo assumir os valores true ou false.

A Listagem 9 mostra um exemplo prático de uso do operador WHILE.

Listagem 9: Exemplo de uso do WHILE

var $contador = 0;
while($contador < 10)
{
echo $contador;
$contador++;
}

Nesse exemplo, temos uma variável contador cujo valor é avaliado e, enquanto for menor que dez, um código é executado, imprimindo este valor e o incrementando em uma unidade.

Após a execução do bloco de comandos, o valor da expressão é novamente avaliado e, se for válido, os códigos são novamente executados.

for

A estrutura de repetição FOR é utilizada para se executar um conjunto de comandos por um número definido de vezes. Para esse operador, são passados uma situação inicial, uma condição e uma ação a ser executada a cada repetição.

Em geral informamos uma variável que serve como contador de repetições, com seu valor inicial, uma condição a ser atendida para que cada repetição seja executada e um incremento ao contador.

Observando a sintaxe a seguir fica mais fácil compreender o funcionamento.

Listagem 10: Sintaxe do operador FOR

for(valor inicial; condição; incremento)
{
  //comandos
}

Na Listagem 11 é mostrado um exemplo prático para facilitar a compreensão dessa estrutura.

Listagem 11: Exemplo de uso do FOR

for($contador = 0; $contador < 10; $contador++)
{
  //comandos
}

O código acima pode ser entendido como “com o contador partindo do zero e enquanto este for menor que 10, execute os comandos e incremente uma unidade em seu valor”.

Na prática, esse código tem o mesmo funcionamento que o da Listagem 9.

foreach

O FOREACH é uma simplificação do operador FOR para se trabalhar em coleções de dados, ou seja, vetores e matrizes. Ele permite acessar cada elemento individualmente iterando sobre toda a coleção e sem a necessidade de informação de índices.

Por exemplo, supondo que fosse preciso percorrer um vetor com alguns elementos com o FOR. Seria necessário utilizar um contador para servir também de índice para acessar cada elemento, conforme a listagem a seguir.

Listagem 12: Iteração em vetor com FOR

$vetor = array(1, 2, 3, 4, 5);
for($i = 0; $i < 5; $i++)
{
  $item = $vetor[$i];
echo $item;
}

Esse código poderia ser simplificado com a utilização do operador FOREACH, cuja sintaxe é mostrada abaixo.

Listagem 13: Sintaxe do operador FOREACH

foreach(vetor as variável)
{
  //variável representa um elemento do vetor a cada iteração
}

Então, reescrevendo o código da Listagem 12, teríamos:

Listagem 14: Exemplo de uso do FOREACH

$vetor = array(1, 2, 3, 4, 5);
foreach($vetor as $item)
{
echo $item;
}

Assim, a cada iteração (repetição) a variável $item representa um elemento do vetor.

Conclusão

Como vimos ao longo desse artigo, é fundamental para qualquer programador conhecer a sintaxe e funcionamento das estruturas de controle de fluxo de forma teórica e prática, pois todos os dias elas são utilizadas nas aplicações.

Espero então que o conteúdo aqui apresentado possa ser útil para aqueles que estão iniciando seus estudos sobre a linguagem PHP.

Um abraço a todos e até a próxima.

Links Úteis

  • Padrões de Projeto em Java:
    Neste guia de consulta você encontrará diversos conteúdos sobre padrões de projeto e arquitetura e como aplicá-los em suas aplicações Java, tais como os padrões GoF e Refactoring.
  • REST e Java:
    Devido a sua simplicidade, os Web Services RESTful têm se tornado cada vez mais populares.

Saiba mais sobre PHP ;)

  • Carreira Programador PHP:
    Neste guia de estudos você encontra os conteúdos que precisará para se tornar um programador PHP completo.
  • Linguagem PHP:
    Neste Guia de Consulta você encontrará todo o conteúdo que precisa para aprender PHP, uma linguagem de programação amplamente utilizada para a construção de aplicações web.