Um dos passos mais importante para aprender a programar, além de estudar, é ter uma base bem solidificada em cada assunto inerente a linguagem de programação que deseja realmente programar. Neste artigo falaremos especificamente sobre: IF, WHILE, DO..WHILE, FOR, FOREACH e SWITCH além de outros comandos que fazem parte da estrutura de controle no PHP.
A estrutura de controle no PHP é dividida em duas partes: comandos de seleção e comandos de repetição. Veja com mais detalhe essa divisão e seus respectivos comandos:
- Comandos de seleção: são também conhecidos como comandos condicionais e com eles é possível executar comandos ou bloco de comandos com base em testes feitos durante a execução. Os comandos são: IF e SWITCH.
- Comandos de Repetição: São utilizados para que um conjunto de instruções seja executado repetidamente por um determinado número de vezes ou até que uma condição seja atingida. Os comandos são: WHILE, DO..WHILE, FOR e FOREACH.
IF/ELSE
Os operadores condicionais são um dos recursos mais básicos da programação e são essenciais no desenvolvimento da lógica de qualquer sistema ou aplicação. São utilizados quando é necessário que determinado código seja executado apenas se atender a uma condição. Veremos neste artigo as estruturas de condição if/else, elseif (ou else if) e operador ternário.
Sintaxe do if/else:
<?php
if (condicao) {
// código se a condição for atendida
} else {
// código se a condição não for atendida
}
?>
Assim, caso a condição seja atendida, o primeiro bloco de código será executado, senão, é executado o segundo bloco.Na Listagem 1 temos um exemplo.
<?php
//Declaração das variáveis "a" e "b"
$a = 4;
$b = 2;
/*Condição criada onde para ser validada
a divisão entre $a e $b deve ser igual a 2*/
if ($a/$b == 2) {
//Retorno da condição
echo "O resultado da divisão é 2";
/*Caso a condição do IF não seja validada
o conteúdo do ELSE será retornado*/
} else {
//Retorno da condição
echo "O resultado da divisão não é 2";
}
?>
Neste código verificamos se a divisão de um número é igual a 2. Caso verdadeiro, executamos o primeiro bloco de código, caso contrário, o segundo.
elseif ou else if
Além do if/else, existe também a condicional elseif ou else if. Essa opção é utilizada caso seja necessário verificar duas ou mais condições. Veja a estrutura da sua sequência na Listagem 2.
<?php
if ($condicaoUm) {
// código se a condiçãoUm for atendida
} elseif ($condicaoDois) {
// código se a condiçãoDois for atendida
} else {
// código se nenhum das condições forem atendidas
}
?>
Observe que agora temos duas condições: caso nenhuma delas seja atendida, o código declarado dentro do else é executado.
<?php
$a = 8;
$b = 2;
if ($a/$b==2) {
echo "O resultado da divisão é 2";
} elseif ($a/$b==4) {
echo "O resultado da divisão é 4";
} else {
echo "O resultado da divisão não é 2 nem 4";
}
?>
Na Listagem 3 temos um exemplo semelhante ao anterior, mas como declaramos mais uma condição foi necessário utilizar o elseif.
Operador ternário
Outra estrutura de condição é o operador ternário, o qual também é chamado de if ternário. Em suma, ele é uma versão compacta do if. Sua sintatxe é apresentada abaixo:
condição ? codigo_1 : codigo_2;
Primeiro declaramos a condição, logo após o sinal de interrogação (?) e o código a ser executado caso a condição seja verdadeira. E depois dos dois pontos temos o código a ser executado caso contrário.
<?php
//Declaração das variáveis
$a = 8;
$b = 2;
//Impressão do resultado da condição da operação ternária
echo $a/$b == 2 ? "O resultado da divisão é 2" : "O resultado da divisão não é 2";
?>
O resultado da execução da Listagem 4 será a impressão da mensagem O resultado da divisão não é 2.
Forma curta ou short form
O operador ternário também possui uma versão ainda mais compacta, chamada de "forma curta" ou short form". A sintaxe da forma curta do operador ternário é:
(condição/codigoUm) ?: codigoDois;
Dessa forma, caso a condição seja atendida, a própria será o código a ser executado, caso contrário, será executado o codigoDois. Na Listagem 5 temos um exemplo prático.
$nome = "Fulano de tal";
$nome = ($nome) ?: "Sem nome";
WHILE
While é a estrutura de repetição mais simples do PHP e com ele informamos que um bloco de código deve ser repetido enquanto a condição declarada for verdadeira. É um comando de repetição (laço) simples, pois executa um conjunto de comandos até que uma determinada condição seja atendida. Veja abaixo a sintaxe do comando:
while (condição) {
// bloco de código
}
A sintaxe é composta por uma expressão, validada antes de cada iteração do loop, e pelo bloco de código a ser executado, declarado entre chaves { }. Se a expressão retornar falso, o loop não é executado. Exemplo de uso vemos na Listagem 6.
$i = 1;
while ($i <= 10) {
echo $i;
$i++;
}
Ao executar este código serão impressos os números de 1 a 10.
Do While
O loop do while tem comportamento parecido com o while, diferenciando-se somente na validação do loop, que é feita no final de cada iteração. Sua sintaxe é apresentada a seguir:
do {
//bloco de código
} while (condição);
Devido a essa característica, normalmente utilizamos essa estrutura de repetição quando desejamos que o bloco de código declarado no loop seja executado pelo menos uma vez. Temos um exemplo de uso na Listagem 7.
$i = 1;
do {
echo $i;
$i++;
} while ($i < 11);
FOR
O for é a estrutura de repetição do PHP que utilizamos quando sabemos a quantidade de repetições que devem ser executadas. A sua sintaxe é apresentada abaixo:
for (expressão 1; expressão 2; expressão 3) {
// bloco de código
}
A sintaxe é composta por três expressões separadas por ponto e vírgula, cada uma delas podendo ter zero, uma ou mais declarações separadas por vírgula:
- Expressão 1: Executada somente uma vez, ao iniciar o loop. Normalmente a utilizamos para declarar e inicializar as variáveis que faremos uso para controlar o número de iterações do loop;
- Expressão 2: Expressão booleana, validada antes de cada iteração do loop. Se a expressão contiver múltiplas expressões, todas serão executadas, mas somente o resultado da última será considerado. Se a expressão for vazia, ela será interpretada como verdadeira. O loop somente será executado enquanto essa expressão retornar true;
- Expressão 3: Executada ao final de cada iteração, normalmente utilizada para declarar a forma de atualização do valor da variável avaliada na expressão 2.
for ($i=0; $i < 10; $i++) {
echo $i."\n";
}
Ao executar o código da Listagem 8 serão impressos os números de 0 a 9.
FOREACH
Com o comando FOREACH trabalhamos com coleções de dados, ou seja, vetores e matrizes, funcionando a partir da versão 4 do PHP. Vamos tentar entendê-lo no código da Listagem 9.
<?php
foreach ($nome_array as $variavel){
comandos;
}
?>
Na Listagem 10 temos um exemplo onde um array é percorrido e seus elementos são exibidos.
<?php
$meu_vetor = array(“A”, “B”, “C”, “D”, “E”);
foreach ($meu_vetor as $elemento){
echo $elemento;
}
?>
Apresentamos nesse tópico a utilização do foreach percorrendo um array. Abordaremos o estudo de array mais a frente.
SWITCH
O switch/case é uma estrutura condicional que está presente em várias linguagens de programação. Ela recebe um valor como parâmetro e verifica se ele atende alguma das condições especificadas. Em caso positivo o trecho de código relacionado a essa condição é executado.
Diferente da estrutura if/else, o switch/case avalia apenas condições de igualdade. Ou seja, ela verifica se o valor recebido como parâmetro é igual a alguma das opções especificadas em seu corpo. Esse comportamento equivale à utilização de vários if/else em sequência, porém, com uma sintaxe mais enxuta e de fácil leitura.
Na Listagem 11 é possível ver a sintaxe da estrutura switch/case. Ela inicia recebendo uma expressão como parâmetro e em seguida são feitas verificações para saber se ela corresponde a algum dos valores especificados.
01 switch (expressão) {
case valor1:
//código a ser executado se a expressão for igual ao valor1
break;
case valor2:
//código a ser executado se a expressão for igual ao valor2
break;
case valorN:
//código a ser executado se a expressão for igual ao valorN
break;
}
Cases agrupados
Caso um mesmo trecho de código deva ser executado para diferentes condições é possível agrupar os cases, da seguinte forma:
switch (expressão) {
case valor1:
case valor2:
case valor3:
//primeiro código
break;
case valor3:
//segundo código
break;
}
- Linhas 2 e 3: Note que os dois primeiros case não possuem o comando break. Isso faz com que o fluxo do código passe para a próxima verificação até encontrar um break. Neste caso, se o valor da expressão for 0 ou 1 o código seguirá e executará o trecho referente ao case 2. Em seguida o break da linha 6 encerrará o fluxo do switch.
Default
Dentro do switch também é possível especificar um trecho de código que deve ser executado no caso de nenhuma das condições ser atendida. Para esse caso temos o comando default, que deve ser adicionado após todos os case, da seguinte forma:
switch (expressão) {
case valor1:
//código referente ao valor1
break;
case valor2:
//código referente ao valor2
break;
case valorN:
//código referente ao valorN
break;
default:
//código caso nenhuma condição seja atendida
break;
}
- Linhas 11 a 13: A estrutura do default é semelhante à do case, porém, esse comando não recebe nenhum valor. Ele será executado caso nenhuma das condições anteriores seja atendida.
Na Listagem 12 podemos ver um exemplo prático de uso da estrutura switch/case.
$escolhaNumero = 2;
switch ($escolhaNumero) {
case 0:
echo "numero vale 0";
break;
case 1:
echo "numero vale 1";
break;
case 2:
echo "numero vale 2";
break;
}
- Linha 1: A variável $escolhaNumero recebe um valor 2;
- Linha 3: Por meio do switch verificamos a variável $escolhaNumero a fim de executar um procedimento para cada valor possível;
- Linhas 4 a 17: Verificamos se o valor $escolhaNumero foi 0, 1 ou 2 e para cada situação imprimimos uma mensagem específica;
Chamamos de fluxo de controle a ordem na qual cada declaração em um programa é interpretada e executada. Em estruturas como for, foreach, while, do-while ou switch, o fluxo de controle retorna à primeira declaração após a última ser executada, até que uma condição seja avaliada como falsa. Os comandos break e continue oferecem maior controle sobre tais estruturas, alterando o fluxo de controle para a próxima iteração ou encerrando todo ciclo de repetições.
Mas algumas vezes queremos localizar e coletar apenas um item dentre os muitos que podem estar presentes
Para percorrer a lista podemos usar uma estrutura de repetição, como for, foreach, while, etc. Mas como evitar que o loop continue após encontramos o item desejado?
Por padrão, foreach continuará a percorrer a lista até que ela chegue ao final, mas nós queremos parar o loop bem aqui!
foreach ($funcionarios as $i => $funcionario){
if ($funcionario ['id'] == 22) {
$busca = $funcionario; }}
O comando break nos permite encerrar a execução do loop em um momento específico. Nesse caso é exatamente o que desejamos!
foreach ($funcionarios as $i => $funcionario){
if ($funcionario ['id'] == 22) {
$busca = $funcionario;
break; }}
Ok, e se quiséssemos coletar todos os demais itens, exceto o de id 22?
Para termos maior controle sobre estruturas de repetição também contamos com continue, que pula a execução atual, passando próxima
foreach ($funcionarios as $i => $funcionario){
if ($funcionario ['id'] == 22) {
$busca = $funcionario; }}
foreach ($funcionarios as $i => $funcionario){
if ($funcionario ['id'] == 22) {
[ continue;}
$busca['id'] = $funcionario; }
Veremos como utilizar os comandos break e continue no PHP.
Break
Break encerra uma estrutura de repetição imediatamente. Geralmente usamos if/else para determinar o momento em que essa condição de encerramento será executada.
A sintaxe do comando do break é esta:
break;
Na Listagem 13 encerramos a execução do while imediatamente após o contador $i alcançar o valor “3”. Como resultado serão impressos apenas os valores “1 2”, em lugar de “1 2 3 4”.
$i = 0;
while ($i++ < 5) {
if ($i == 3) break;
echo $i . "\n";
}
Perceba que no caso acima break fez com que o laço fosse interrompido, mesmo antes da condição de encerramento $i++ < 5 ser satisfeita.
Continue
Continue pula a iteração atual, ignorando todo o código declarado abaixo dele, dentro da estrutura de repetição. Geralmente utilizamos if/else para determinar o momento em que esse comando deverá ser executado.
A sintaxe do comando continue é esta:
continue;
Na Listagem 14 saltamos para a próxima iteração quando $i atinge o valor “3”. Como resultado o código echo $i . "\n" não imprimirá esse valor, apenas “1 2 4 5”.
$i = 0;
while ($i++ < 5) {
if ($i == 3) continue;
echo $i . "\n";
}
Interrompendo vários laços
O Break aceita como argumento o número de estruturas aninhadas a serem interrompidas, sendo 1 seu valor padrão.
Na Listagem 15 encerramos a execução de três while imediatamente após imprimir o valor “1”. Como resultado serão impressos apenas os valores “3 2 1”. Os comandos nas linhas 14 e 16 serão ignorados.
$i = 0;
while ($i++ < 3) {
echo "3\n";
while (1) {
echo "2\n";
while (1) {
echo "1\n";
/*Como o break recebeu o argumento numérico 3,
este será o nº de estruturas a serem interrompidas
no caso os 3 whiles*/
break 3;
}
echo "Essa linha nunca vai ser exibida\n";
}
echo "Nem essa linha\n";
}
Continue também aceita um argumento numérico opcional que diz quantos níveis de laços aninhados devem seguir para a próxima iteração. O valor padrão é 1, afetando apenas o laço em cujo escopo o comando está declarado.
Na Listagem 16 saltamos para o início do primeiro while após imprimir o valor “1”. Como resultado serão impressos apenas os valores 3 2 1 3 2 1 3 2 1 3 2 1. Os comandos nas linhas 10 e 12 serão, portanto, ignorados.
$i = 0;
while ($i++ < 3) {
echo "3\n";
while (1) {
echo "2\n";
while (1) {
echo "1\n";
continue 3;
}
echo "Essa linha nunca vai ser exibida\n";
}
echo "Nem essa linha\n";
}
Comportamento do Switch
Diferentemente de outras linguagens, no PHP switch é considerada uma estrutura de repetição. Portanto, se switch está dentro de um for, ou qualquer outra estrutura de repetição, continue 2 também afetará o fluxo de execução em mais de um nível.
Como exemplo, na Listagem 17 os comandos continue 2 e break 2 impedirão que o valor “X” seja impresso em todas as iterações de while. Como resultado serão impressos apenas os valores “1a X 2c 3e X 4g”.
$i = 0;
while ($i++ < 4) {
switch ($i) {
case 1:
echo $i . "a\n";
continue;
echo $i . "b\n";
case 2:
echo $i . "c\n";
continue 2;
echo $i . "d\n";
case 3:
echo $i . "e\n";
break;
echo $i . "f\n";
case 4:
echo $i . "g\n";
break 2;
echo $i . "h\n";
}
echo "X\n";
}
Neste artigo vimos as principais estruturas de controle do PHP que serão importantes no processo de aprendizado da linguagem, conhecendo suas sintaxes, devidas implementações e características.
Confira outros conteúdos:
Black November
Desconto exclusivo para as primeiras 200 matrículas!
Pagamento anual
12x no cartão
De: R$ 69,00
Por: R$ 59,00
Total: R$ 708,00
Garanta o desconto
- Formação FullStack Completa
- Carreira Front-end I e II, Algoritmo e Javascript, Back-end e Mobile
- +10.000 exercícios gamificados
- +50 projetos reais
- Comunidade com + 200 mil alunos
- Estude pelo Aplicativo (Android e iOS)
- Suporte online
- 12 meses de acesso
Pagamento recorrente
Cobrado mensalmente no cartão
De: R$ 79,00
Por: R$ 64,00 /mês
Total: R$ 768,00
Garanta o desconto
- Formação FullStack Completa
- Carreira Front-end I e II, Algoritmo e Javascript, Back-end e Mobile
- +10.000 exercícios gamificados
- +50 projetos reais
- Comunidade com + 200 mil alunos
- Estude pelo Aplicativo (Android e iOS)
- Suporte online
- Fidelidade de 12 meses
- Não compromete o limite do seu cartão
<Perguntas frequentes>
Nossos casos de sucesso
Eu sabia pouquíssimas coisas de programação antes de começar a estudar com vocês, fui me especializando em várias áreas e ferramentas que tinham na plataforma, e com essa bagagem consegui um estágio logo no início do meu primeiro período na faculdade.
Estudo aqui na Dev desde o meio do ano passado!
Nesse período a Dev me ajudou a crescer muito aqui no trampo.
Fui o primeiro desenvolvedor contratado pela minha
empresa. Hoje eu lidero um time de desenvolvimento!
Minha meta é continuar estudando e praticando para ser um
Full-Stack Dev!
Economizei 3 meses para assinar a plataforma e sendo sincero valeu muito a pena, pois a plataforma é bem intuitiva e muuuuito didática a metodologia de ensino. Sinto que estou EVOLUINDO a cada dia. Muito obrigado!
Nossa! Plataforma maravilhosa. To amando o curso de desenvolvimento front-end, tinha coisas que eu ainda não tinha visto. A didática é do jeito que qualquer pessoa consegue aprender. Sério, to apaixonado, adorando demais.
Adquiri o curso de vocês e logo percebi que são os melhores do Brasil. É um passo a passo incrível. Só não aprende quem não quer. Foi o melhor investimento da minha vida!
Foi um dos melhores investimentos que já fiz na vida e tenho aprendido bastante com a plataforma. Vocês estão fazendo parte da minha jornada nesse mundo da programação, irei assinar meu contrato como programador graças a plataforma.
Wanderson Oliveira
Comprei a assinatura tem uma semana, aprendi mais do que 4 meses estudando outros cursos. Exercícios práticos que não tem como não aprender, estão de parabéns!
Obrigado DevMedia, nunca presenciei uma plataforma de ensino tão presente na vida acadêmica de seus alunos, parabéns!
Eduardo Dorneles
Aprendi React na plataforma da DevMedia há cerca de 1 ano e meio... Hoje estou há 1 ano empregado trabalhando 100% com React!
Adauto Junior
Já fiz alguns cursos na área e nenhum é tão bom quanto o de vocês. Estou aprendendo muito, muito obrigado por existirem. Estão de parabéns... Espero um dia conseguir um emprego na área.
Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.