Como Validar Dados em PHP: Guia Prático com Exercícios Resolvidos

🚀 O que você vai aprender hoje:

  • Conceito Real: Por que validar dados é a diferença entre um dev amador e um profissional.
  • Validação Numérica: Como garantir que o usuário insira notas apenas entre 0 e 10.
  • Segurança de Strings: Criando regras para senhas e logins mais seguros.
  • Exercício Prático: Resolução passo a passo de problemas comuns de lógica.

O que é validação de dados em PHP?

A validação de dados em PHP é o processo de verificar se as informações enviadas por um usuário (via formulários ou APIs) atendem aos critérios técnicos e de negócio antes de serem processadas ou salvas. Ela serve para impedir erros de sistema, garantir a integridade do banco de dados e evitar ataques de segurança como XSS e SQL Injection.

Como desenvolvedor, você precisa adotar um mantra: "Nunca confie na entrada do usuário". Se você pede uma nota, alguém vai tentar digitar "onze" ou "-5". Se pede uma data, alguém vai escrever um texto. Validar é colocar "seguranças" na porta da sua aplicação.

Validando Entrada Numérica em PHP: O Desafio da Nota

Muitas pessoas pesquisam no Google: "Como validar se um número está entre 0 e 10 no PHP?". Esse é um exercício clássico de lógica de programação que utiliza [INSERIR LINK: OPERADORES LÓGICOS].

O objetivo é simples: o sistema deve pedir a nota e só aceitar se ela for válida. Veja a implementação moderna e limpa:


<?php
// Verificamos se o formulário foi enviado via GET
$nota = $_GET['number'] ?? null;

if ($nota !== null) {
    // A mágica acontece aqui: verificamos o intervalo
    if ($nota < 0 || $nota > 10) {
        echo "<div style='color: red;'>⚠️ Erro: Insira uma nota de 0 até 10!</div>";
    } else {
        echo "<div style='color: green;'>✅ Sucesso: Nota {$nota} inserida no sistema.</div>";
    }
}
?>

<form action="" method="get">
    <label>Insira uma nota (0 a 10):</label><br>
    <input type="number" name="number" required>
    <input type="submit" value="Enviar Nota">
</form>
Apostila PHP Progressivo

Cansado de depender de tutoriais picados? 📚

Validar dados é apenas a ponta do iceberg. Se você quer dominar a lógica do PHP e criar sistemas profissionais, nossa Apostila PHP Progressivo é o seu mapa do tesouro. Estude offline, resolva exercícios exclusivos e acelere sua entrada no mercado de trabalho.

Quero a Apostila Completa em PDF →

Validando Strings: Segurança em Login e Senha

Um erro comum em segurança é permitir que a senha seja igual ao nome de usuário. Hackers usam scripts de "Brute Force" que testam justamente essas combinações óbvias. No PHP, comparamos strings para evitar isso.

🛠️ Curiosidade: No mundo real, além dessa validação, você usaria funções como `password_hash()` para nunca salvar a senha limpa no banco.


<?php
$nome = $_GET['name'] ?? '';
$senha = $_GET['password'] ?? '';

if (!empty($nome) && !empty($senha)) {
    // Verificação de igualdade (Case Sensitive)
    if ($nome === $senha) {
        echo "<b style='color: red;'>❌ Erro: Por segurança, sua senha não pode ser igual ao login!</b>";
    } else {
        echo "<b style='color: green;'>✔️ Cadastro aprovado! Dados validados.</b>";
    }
}
?>

<form action="" method="get">
    Usuário: <input type="text" name="name" required><br>
    Senha: <input type="password" name="password" required><br>
    <input type="submit" value="Criar Conta">
</form>

💡 Dica de Sênior: Validação no Front-end vs Back-end

Muitos iniciantes perguntam: "Se eu já uso o atributo 'required' ou JavaScript para validar, preciso de PHP?". A resposta é SIM! O JavaScript pode ser desativado ou burlado facilmente. A validação em PHP é a sua última e mais importante linha de defesa.

🚀 Desafio Extra: Confirmação de Senha

Agora que você aprendeu o básico, que tal subir de nível? Um dos fluxos mais comuns em sites é pedir o login, a senha e a confirmação da senha.

Exercício: Altere o código acima para incluir um terceiro campo chamado `confirma_senha`. O sistema só deve dar "Sucesso" se:

  1. O login for diferente da senha.
  2. A senha for exatamente igual à confirmação.

Tente resolver sozinho! Se travar, a lógica completa e as variações deste código estão detalhadas na nossa apostila completa.


🎓 Quer validar seus conhecimentos profissionalmente?

Certificado PHP Progressivo

Ao concluir o nosso curso online, você pode solicitar o seu Certificado de Programador PHP. Ideal para turbinar seu LinkedIn e provar para as empresas que você domina a linguagem.

Clique aqui para obter seu Certificado

PHP vale a pena em 2026? Análise realista do mercado

PHP em 2026: A análise real que todo desenvolvedor deveria ler

Você abre o LinkedIn e a "trend" do momento é Node.js, Go ou Rust. No YouTube, sempre tem alguém decretando o fim do PHP. Aí bate aquela dúvida cruel: será que estou investindo tempo em uma tecnologia que está morrendo?

A realidade é bem diferente do hype das redes sociais. Enquanto alguns discutem qual é a linguagem mais "cool", sistemas de faturamento que processam milhões de reais por hora continuam rodando em PHP. Não é questão de paixão, é questão de mercado real e estabilidade.

O que mudou no PHP moderno?

Muita gente critica o PHP baseando-se em versões de 15 anos atrás. O PHP 8.x atual é uma linguagem robusta, com tipagem forte e performance que não deixa a desejar para seus concorrentes no back-end. Criticar o PHP hoje por causa do passado é como dizer que a internet não presta porque a conexão discada caía quando o telefone tocava.

O mercado de 2026 não busca mais aquele "faz-tudo" que mistura HTML com SQL no mesmo arquivo. As empresas buscam desenvolvedores que dominam a engenharia por trás da linguagem.

Código na prática: O padrão de 2026

Veja como estruturamos uma classe moderna. Observe o uso de Strict Types e Constructor Promotion, recursos que trazem segurança e agilidade para o projeto:


<?php
// Garante que os tipos de dados sejam respeitados rigorosamente
declare(strict_types=1);

class GerenciadorDeUsuario {
    // Definição moderna de atributos diretamente no construtor
    public function __construct(
        private string $nome,
        private string $email,
        private bool $isAtivo = true
    ) {}

    public function validarAcesso(): string {
        if (!$this->isAtivo) {
            throw new Exception("Acesso negado: conta inativa.");
        }
        return "Acesso autorizado para: {$this->nome}";
    }
}

// Instanciando com segurança
try {
    $dev = new GerenciadorDeUsuario("Marcos", "contato@dev.com");
    echo $dev->validarAcesso();
} catch (Exception $e) {
    echo $e->getMessage();
}
?>

Este código é o que separa os amadores dos profissionais. É limpo, testável e escalável. Se você aprender a programar seguindo esses padrões, o mercado deixará de ser um desafio e passará a ser uma oportunidade.

Onde o PHP realmente brilha hoje

Se você quer focar sua carreira para ter o melhor retorno, olhe para estes três pilares:

  • Ecosystem Laravel/Symfony: Onde as startups e grandes empresas criam APIs e sistemas SaaS complexos.
  • Sustentação de Sistemas Críticos: O "legado" que ninguém te conta é que esses sistemas pagam os maiores salários porque exigem maturidade técnica.
  • E-commerce de Alta Performance: A base da web comercial ainda depende massivamente de PHP customizado.

Dica de Ouro: Não tente aprender tudo de uma vez. Foque em entender como o PHP gerencia memória, como funciona o Composer e como proteger suas rotas. Isso te coloca no topo da pirâmide salarial.


Material de Estudo Recomendado

Para quem deseja sair do básico e seguir um cronograma didático, o Curso de PHP Progressivo oferece uma trilha completa e gratuita que você pode acessar pelo nosso Sumário Geral.

Além do conteúdo online, muitos alunos preferem ter o material organizado para consulta rápida e estudo sem distrações. Para esses casos, disponibilizamos a Apostila PHP Progressivo em PDF. Você pode conferir os detalhes e como baixar o material completo neste link oficial.


Erros que você deve evitar

Para o Google e para os recrutadores, a qualidade do que você entrega é o que conta. Evite:

  1. Usar extensões de banco de dados obsoletas (sempre use PDO).
  2. Ignorar o tratamento de erros (sempre use Try/Catch).
  3. Escrever código sem comentários lógicos.

Conclusão: Vale a pena?

Sim, o PHP vale a pena em 2026 para quem decide ser um especialista. A linguagem parou de ser "fácil" para se tornar "poderosa". Se você busca uma carreira estável e cheia de desafios reais, o elefante azul ainda é uma das melhores escolhas que você pode fazer.

O próximo passo lógico para evoluir seu aprendizado é entender como integrar esse código com um banco de dados de forma segura. Continue acompanhando nossos posts para dominar o SQL moderno aplicado ao PHP.

Como Resolver o Erro "Headers Already Sent" no PHP (Solução Definitiva)

Como Resolver o Erro "Headers Already Sent" no PHP (Solução Definitiva)

Você escreve o script de login perfeito. Testa a conexão com o banco, valida a senha e, na hora de redirecionar o usuário para o painel com a função header(), a tela cospe o temido aviso: Warning: Cannot modify header information.

É o clássico batismo de fogo de quem trabalha com PHP. Aquele cliente que estava esperando o sistema rodar liso depara com uma tela cheia de caminhos de arquivos. A boa notícia é que a solução é mais simples do que parece, exigindo apenas que você entenda como o servidor empacota as informações.

O que causa esse bloqueio?

O protocolo HTTP funciona como uma encomenda enviada pelos Correios. Os headers (cabeçalhos HTTP) são a etiqueta colada do lado de fora da caixa, contendo as instruções de entrega e redirecionamento. O conteúdo (seu HTML, um echo, ou até um espaço em branco invisível) é o produto que vai lá dentro.

O PHP precisa enviar a etiqueta (headers) antes de enviar o conteúdo. Se você der um echo, ou deixar uma linha em branco fora da tag <?php, o PHP entende que a caixa já pode ser despachada. Tentar usar header("Location: ...") depois disso é tentar alterar o endereço de uma caixa que já está no caminhão de entrega. O servidor barra na hora.

Como resolver no código: O certo e o errado

O erro acontece quase sempre porque algum texto vazou para a tela antes do comando de redirecionamento. Veja o cenário clássico de erro:


<!-- ERRO COMUM: Um espaço em branco ou HTML antes da tag do PHP -->
 
<?php
$usuario = "admin";
if ($usuario == "admin") {
    // Isso vai falhar porque aquela linha vazia lá em cima já enviou o corpo da página!
    header("Location: painel.php");
    exit;
}
?>

Para corrigir, garanta que absolutamente nada seja impresso antes da função header(). A tag <?php deve ser a primeira coisa no topo do seu arquivo, na linha 1, coluna 1.

Caso o seu sistema tenha uma arquitetura complexa e você realmente precise processar conteúdo antes de redirecionar, a salvação é o controle de buffer de saída com ob_start():


<?php
// Inicia o buffer. Tudo o que for impresso fica retido na memória do servidor.
ob_start(); 

echo "Bem-vindo ao sistema. Carregando...";

// Processamento do banco de dados aqui...

if ($login_correto) {
    // Agora o header funciona, pois o "echo" acima ainda não foi despachado para o navegador!
    header("Location: dashboard.php");
    exit;
}

// Libera o conteúdo da memória para a tela se não houver redirecionamento
ob_end_flush(); 
?>

Aviso: Sempre coloque um exit; ou die(); imediatamente após um header("Location: ..."). Isso impede que o resto da página continue sendo processado ocultamente, economizando recursos e evitando falhas de segurança.

Apostila PHP Progressivo

Domine o PHP Offline e Sem Propagandas 🚀

Se você quer dominar a manipulação de sessões, redirecionamentos, arquitetura de código e ter todo o material à mão sem depender da internet, o conteúdo completo está na nossa Apostila PHP Progressivo em PDF. O atalho para não travar mais nesses conceitos fundamentais.

Baixar a Apostila Completa 📥

Lendo o Log: Onde exatamente está o erro?

O PHP te dá a resposta exata de onde você errou, basta ler a mensagem do terminal (ou da tela) com atenção. O erro sempre tem duas partes fundamentais:

Warning: Cannot modify header information - headers already sent by (output started at /var/www/config.php:5) in /var/www/login.php on line 12

  • output started at config.php:5 - Este é o CULPADO. Vá no arquivo config.php, exatamente na linha 5. É lá que existe um espaço, um echo ou um HTML perdido.
  • in login.php on line 12 - Esta é a VÍTIMA. É onde está a sua função header() que falhou porque o arquivo config.php estragou tudo antes.

Onde isso quebra na vida real?

Você vai esbarrar nisso constantemente ao criar Sistemas de Login (onde você checa as credenciais e redireciona para a área restrita), ao forçar Downloads de Arquivos (onde você altera o Content-Type via header), e ao manipular Cookies ou Sessões (session_start() também modifica cabeçalhos e obedece às mesmas regras).

Dica de Ouro do Sênior: O vilão invisível "UTF-8 BOM"

Você olhou o arquivo inteiro. Não tem espaço, não tem enter, não tem echo, e o erro continua. O que está acontecendo?

O seu editor de código (como o Bloco de Notas do Windows ou configurações erradas no VSCode) pode estar salvando o arquivo com a codificação UTF-8 com BOM (Byte Order Mark). O BOM insere 3 bytes invisíveis no mesmíssimo início do arquivo. O PHP lê esses bytes, acha que é conteúdo, e despacha os cabeçalhos. Mude a codificação do seu editor para UTF-8 Sem BOM (ou UTF-8 genérico) e salve novamente. O erro sumirá.

Como evitar dor de cabeça

  • Remova qualquer quebra de linha antes de <?php.
  • Se um arquivo PHP contém apenas código (sem HTML), nunca feche a tag ?> no final. Deixar aberto impede que espaços acidentais no fim do arquivo causem o erro ao ser incluído via require.
  • Use ob_start() no topo do seu projeto (como no `index.php` principal) se a sua arquitetura misturar muita visualização com lógica de controlador.
  • Sempre verifique a codificação UTF-8 sem BOM.

Corrigir bugs rapidamente é o que separa o amador do profissional. Agora que você dominou a lógica do protocolo HTTP e do PHP, avance em seus estudos acessando o Sumário Completo do Curso PHP Progressivo e estude todos os módulos, do básico ao avançado com MySQL.

38 Exercícios de Laços e Loops em PHP (Pratique FOR, WHILE e DO WHILE)

Hora de treinar, pessoal! 🏋️‍♂️

O que vai definir, no fim das contas, se você é um bom desenvolvedor web ou não, é a quantidade de exercícios que você resolve (ou pelo menos tenta resolver).

Revise a teoria antes de começar:

⚠️ Regra de Ouro: Tente muito, tente bastante mesmo. Quebre a cabeça e só depois veja a solução!

Lista de Questões: Laços e Loopings em PHP

  1. Faça um programa que peça uma nota, entre zero e dez. Mostre uma mensagem caso o valor seja inválido e continue pedindo até que o usuário informe um valor válido.
  2. Faça um programa que leia um nome de usuário e a sua senha e não aceite a senha igual ao nome do usuário, mostrando uma mensagem de erro e voltando a pedir as informações.
    🔗 Ver Solução: 01 e 02 - Validando dados em PHP
  3. Faça um programa que leia e valide as seguintes informações:
    1. Nome: maior que 3 caracteres;
    2. Idade: entre 0 e 150;
    3. Salário: maior que zero;
    4. Sexo: 'f' ou 'm';
    5. Estado Civil: 's', 'c', 'v', 'd';
    Dica: Use a função strlen(string) para saber o tamanho de um texto.
  4. Supondo que a população de um país A seja da ordem de 80.000 habitantes com uma taxa anual de crescimento de 3% e que a população de B seja 200.000 habitantes com uma taxa de crescimento de 1.5%. Faça um programa que calcule e escreva o número de anos necessários para que a população do país A ultrapasse ou iguale a população do país B, mantidas as taxas de crescimento.
  5. Altere o programa anterior permitindo ao usuário informar as populações e as taxas de crescimento iniciais. Valide a entrada e permita repetir a operação.
    🔗 Ver Solução: 04 e 05 - População de duas cidades
  6. Faça um programa que imprima na tela os números de 1 a 20, um abaixo do outro. Depois modifique o programa para que ele mostre os números um ao lado do outro.
  7. Faça um programa que leia 5 números e informe o maior número.
  8. Faça um programa que leia 5 números e informe a soma e a média dos números.
    🔗 Ver Solução: 07 e 08 - Maior, soma e média
  9. Faça um programa que imprima na tela apenas os números ímpares entre 1 e 50.
  10. Faça um programa que receba dois números inteiros e gere os números inteiros que estão no intervalo compreendido por eles.
  11. Altere o programa anterior para mostrar no final a soma dos números.
  12. Desenvolva um gerador de tabuada, capaz de gerar a tabuada de qualquer número inteiro entre 1 a 10. O usuário deve informar de qual numero ele deseja ver a tabuada. A saída deve ser conforme o exemplo abaixo:
    Tabuada de 5:
    5 X 1 = 5
    5 X 2 = 10
    ...
    5 X 10 = 50
    
    🔗 Ver Solução: Tabuada em PHP
  13. Faça um programa que peça dois números, base e expoente, calcule e mostre o primeiro número elevado ao segundo número. Não utilize a função de potência da linguagem.
    🔗 Ver Solução: Potenciação em PHP
  14. Faça um programa que peça 10 números inteiros, calcule e mostre a quantidade de números pares e a quantidade de números ímpares.
  15. A série de Fibonacci é formada pela sequência 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55... Faça um programa capaz de gerar a série até o n-ésimo termo.
    🔗 Ver Solução: Fibonacci com laços
  16. A série de Fibonacci é formada pela sequência 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55... Faça um programa que gere a série até que o valor seja maior que 500.
  17. Faça um programa que calcule o fatorial de um número inteiro fornecido pelo usuário. Ex.: $5! = 5 \cdot 4 \cdot 3 \cdot 2 \cdot 1 = 120$
    🔗 Ver Solução: Fatorial com laços
  18. Faça um programa que, dado um conjunto de N números, determine o menor valor, o maior valor e a soma dos valores.
  19. Altere o programa anterior para que ele aceite apenas números entre 0 e 1000.
  20. Altere o programa de cálculo do fatorial, permitindo ao usuário calcular o fatorial várias vezes e limitando o fatorial a números inteiros positivos e menores que 16.
  21. Faça um programa que peça um número inteiro e determine se ele é ou não um número primo. Um número primo é aquele que é divisível somente por ele mesmo e por 1.
  22. Altere o programa de cálculo dos números primos, informando, caso o número não seja primo, por quais números ele é divisível.
    🔗 Ver Solução 21 e 22: Números primos em PHP
  23. Faça um programa que mostre todos os primos entre 1 e N sendo N um número inteiro fornecido pelo usuário. O programa deverá mostrar também o número de divisões que ele executou para encontrar os números primos. Serão avaliados o funcionamento, o estilo e o número de testes (divisões) executados.
  24. Faça um programa que calcule o fatorial de um número inteiro fornecido pelo usuário. A saída deve ser conforme o exemplo abaixo:
    Fatorial de: 5
    5! = 5 . 4 . 3 . 2 . 1 = 120
    
  25. O Departamento Estadual de Meteorologia lhe contratou para desenvolver um programa que leia um conjunto indeterminado de temperaturas, e informe ao final a menor e a maior temperaturas informadas, bem como a média das temperaturas.
  26. Os números primos possuem várias aplicações dentro da Computação, por exemplo na Criptografia. Um número primo é aquele que é divisível apenas por um e por ele mesmo. Faça um programa que peça um número inteiro e determine se ele é ou não um número primo.
  27. Encontrar números primos é uma tarefa difícil. Faça um programa que gera uma lista dos números primos existentes entre 1 e um número inteiro informado pelo usuário.
  28. Desenvolva um programa que faça a tabuada de um número qualquer inteiro que será digitado pelo usuário, mas a tabuada não deve necessariamente iniciar em 1 e terminar em 10. O valor inicial e final devem ser informados também pelo usuário, conforme exemplo abaixo:
    Montar a tabuada de: 5
    Começar por: 4
    Terminar em: 7
    
    Vou montar a tabuada de 5 começando em 4 e terminando em 7:
    5 X 4 = 20
    5 X 5 = 25
    5 X 6 = 30
    5 X 7 = 35
    
    Obs: Você deve verificar se o usuário não digitou o final menor que o inicial.
  29. Uma academia deseja fazer um censo entre seus clientes para descobrir o mais alto, o mais baixo, a mais gordo e o mais magro. Faça um programa que pergunte a cada um dos clientes da academia seu código, sua altura e seu peso. O final da digitação de dados deve ser dada quando o usuário digitar 0 (zero) no campo código. Ao encerrar o programa, devem ser informados os códigos e valores do cliente mais alto, do mais baixo, do mais gordo e do mais magro, além da média das alturas e dos pesos.
  30. Um funcionário de uma empresa recebe aumento salarial anualmente. Sabe-se que:
    1. Esse funcionário foi contratado em 1995, com salário inicial de R$ 1.000,00;
    2. Em 1996 recebeu aumento de 1,5% sobre seu salário inicial;
    3. A partir de 1997 (inclusive), os aumentos salariais sempre correspondem ao dobro do percentual do ano anterior.
    Faça um programa que determine o salário atual desse funcionário. Após concluir isto, altere o programa permitindo que o usuário digite o salário inicial.
  31. Faça um programa que leia dez conjuntos de dois valores, o primeiro representando o número do aluno e o segundo representando a sua altura em centímetros. Encontre o aluno mais alto e o mais baixo. Mostre o número do aluno mais alto e o número do aluno mais baixo, junto com suas alturas.
  32. Foi feita uma estatística em cinco cidades brasileiras para coletar dados sobre acidentes de trânsito. Foram obtidos os seguintes dados:
    1. Código da cidade;
    2. Número de veículos de passeio (em 1999);
    3. Número de acidentes de trânsito com vítimas (em 1999).
    Deseja-se saber:
    1. Qual o maior e menor índice de acidentes de trânsito e a que cidade pertence;
    2. Qual a média de veículos nas cinco cidades juntas;
    3. Qual a média de acidentes de trânsito nas cidades com menos de 2.000 veículos de passeio.
  33. Faça um programa que receba o valor de uma dívida e mostre uma tabela com os seguintes dados: valor da dívida, valor dos juros, quantidade de parcelas e valor da parcela.
    Qtd de Parcelas  |  % de Juros sobre o valor inicial
    1                |  0
    3                |  10
    6                |  15
    9                |  20
    12               |  25
    
    Exemplo de saída:
    Valor da Dívida | Valor dos Juros | Qtd de Parcelas | Valor da Parcela
    R$ 1.000,00     | 0               | 1               | R$ 1.000,00
    R$ 1.100,00     | 100             | 3               | R$ 366,00
    R$ 1.150,00     | 150             | 6               | R$ 191,67
    
  34. Faça um programa que leia uma quantidade indeterminada de números positivos e conte quantos deles estão nos seguintes intervalos: [0-25], [26-50], [51-75] e [76-100]. A entrada de dados deverá terminar quando for lido um número negativo.
  35. O cardápio de uma lanchonete é o seguinte:
    Especificação   | Código | Preço
    Cachorro Quente | 100    | R$ 1,20
    Bauru Simples   | 101    | R$ 1,30
    Bauru com ovo   | 102    | R$ 1,50
    Hambúrguer      | 103    | R$ 1,20
    Cheeseburguer   | 104    | R$ 1,30
    Refrigerante    | 105    | R$ 1,00
    
    Faça um programa que leia o código dos itens pedidos e as quantidades desejadas. Calcule e mostre o valor a ser pago por item (preço * quantidade) e o total geral do pedido. Considere que o cliente deve informar quando o pedido deve ser encerrado.
  36. Em uma eleição presidencial existem quatro candidatos. Os votos são informados por meio de código:
    1, 2, 3, 4 - Votos para os respectivos candidatos (monte a tabela, ex: 1-José)
    5 - Voto Nulo
    6 - Voto em Branco
    
    Faça um programa que calcule e mostre: total de votos para cada candidato, total de nulos, total de brancos, e a percentagem de votos nulos e brancos sobre o total. Para finalizar a contagem, digite zero.
  37. Desenvolver um programa para verificar a nota do aluno em uma prova com 10 questões. O programa deve perguntar ao aluno a resposta de cada questão e ao final comparar com o gabarito, calculando o total de acertos e a nota. Após cada aluno, perguntar se outro aluno vai utilizar o sistema. No final, informar: Maior e Menor Acerto, Total de Alunos, Média da Turma.
    Gabarito da Prova:
    01 - A | 02 - B | 03 - C | 04 - D | 05 - E
    06 - E | 07 - D | 08 - C | 09 - B | 10 - A
    
  38. Em uma competição de salto em distância cada atleta tem direito a cinco saltos. O melhor e o pior resultados são eliminados. O resultado fica sendo a média dos três valores restantes. Faça um programa que receba o nome e as cinco distâncias. O programa deve ser encerrado quando não for informado o nome do atleta.
    Atleta: Rodrigo Curvêllo
    Primeiro Salto: 6.5 m
    Segundo Salto: 6.1 m
    ...
    Melhor salto: 6.5 m
    Pior salto: 5.3 m
    Média dos demais saltos: 5.9 m
    
    Resultado final:
    Rodrigo Curvêllo: 5.9 m
    
  39. Em uma competição de ginástica, cada atleta recebe votos de sete jurados. A melhor e a pior nota são eliminadas. Faça um programa que receba o nome do ginasta e as notas, calcule a média e exiba um relatório similar ao do exercício anterior.
  40. Faça um programa que peça um número inteiro positivo e em seguida mostre este número invertido.
    Exemplo:
    12376489 => 98467321
    
  41. Faça um programa que mostre os n termos da Série a seguir e imprima no final a soma da série:

    $S = \frac{1}{1} + \frac{2}{3} + \frac{3}{5} + \frac{4}{7} + \frac{5}{9} + \dots + \frac{n}{m}$
  42. Sendo $H = 1 + \frac{1}{2} + \frac{1}{3} + \frac{1}{4} + \dots + \frac{1}{N}$, Faça um programa que calcule o valor de H com N termos.
    🔗 Código disponível na Apostila PHP Progressivo
  43. Faça um programa que mostre os n termos da Série a seguir e imprima no final a soma da série:

    $S = \frac{1}{1} + \frac{2}{3} + \frac{3}{5} + \frac{4}{7} + \frac{5}{9} + \dots + \frac{n}{m}$

    🔗 Código disponível na Apostila PHP Progressivo

Como Usar BREAK e CONTINUE no PHP (Pare ou Pule Loops como um Sênior)

🚀 O que você vai aprender nesta aula:

  • O que é o comando BREAK e como usá-lo para evitar processamento inútil.
  • Como o CONTINUE ajuda a pular iterações e limpar seu código de IFs gigantes.
  • A diferença prática (e visual) entre interromper e pular rodadas de um loop.
  • Dica Sênior: Como parar laços aninhados (um dentro do outro) de uma vez só.

Fala, dev! Agora que você já sabe criar laços de repetição (como FOR e WHILE), você ganhou o poder de automatizar tarefas. Mas, como diz o ditado: com grandes poderes, vêm grandes responsabilidades.

E se você precisar parar um laço pela metade porque já encontrou o que procurava? Ou se quiser ignorar um item específico da lista e pular direto para o próximo? É aí que entram os super-heróis do controle de fluxo: break e continue.

Comando break e continue em PHP

O que é o comando BREAK em PHP?

O comando break no PHP serve para encerrar imediatamente a execução de um laço de repetição (WHILE, FOR, FOREACH ou DO WHILE) ou estrutura condicional (SWITCH). Assim que o PHP lê a palavra "break", ele abandona o loop atual na mesma hora e continua executando o resto do programa.

Você já cruzou com ele na aula de SWITCH, mas nos loops ele ganha uma nova dimensão: a de otimização de performance.

Exemplo 1: Otimizando um laço FOR

Imagine que você tem uma lista de 1.000.000 de números e quer encontrar o primeiro número que seja múltiplo de 11 e de 13 ao mesmo tempo. Veja como o break salva o servidor de um colapso:

<?php
for ($count = 1; $count <= 1000000; $count++) {
    // Se for múltiplo de 11 e 13...
    if ($count % 11 == 0 && $count % 13 == 0) {
        echo "Achei! O número é o $count";
        break; // O loop PARA AQUI. Os outros números não serão testados!
    }
}
?>

⚠️ Pense bem: Sem o break, o PHP acharia a resposta no número 143, mas continuaria processando os outros 999.857 números à toa. Isso é o que chamamos de código ineficiente.

Exemplo 2: O Loop Infinito Controlado (WHILE true)

Muitas vezes, não sabemos quantas vezes o loop vai rodar até a condição ser atingida. Nesses casos, criamos um loop que "roda para sempre", mas o encerramos por dentro usando o break.

<?php
$count = 1;

while (true) { // Vai rodar para sempre?
    if ($count % 12 == 0 && $count % 21 == 0) {
        echo "O MMC entre 12 e 21 é: $count";
        break; // ...Não! O break garante a saída.
    }
    $count++;
}
?>
Apostila PHP Progressivo

Tempo é dinheiro. Aprenda do jeito certo. ⏳

Ficar caçando erros de loops infinitos ou tentar juntar pedaços de tutoriais desatualizados atrasa sua carreira. Se você quer economizar meses de estudo, precisa de um método sequencial e lógico.

A Apostila PHP Progressivo entrega exercícios resolvidos que moldam seu raciocínio lógico direto ao ponto.

Acelerar Meu Aprendizado →

O que é o comando CONTINUE em PHP?

O comando continue serve para interromper apenas a iteração (rodada) atual do loop, ignorando todo o código que está abaixo dele e pulando diretamente para a próxima avaliação do laço de repetição. O loop, no entanto, continua vivo.

Sabe aquele momento que você quer filtrar algo indesejado e apenas "passar reto"? É pra isso que ele serve.

Exemplo Prático: O Jogo do PIM

No clássico jogo do PIM, contamos os números, mas quando encontramos um múltiplo de 4, falamos "PIM" no lugar do número.

<?php
for ($count = 1; $count <= 20; $count++) {

    if ($count % 4 == 0) {
        echo "PIM <br>";
        continue; // Ignora o 'echo' lá embaixo e pula pro próximo número
    }

    echo "$count <br>";
}
?>

🛠️ Por que isso é profissional? O continue evita que você crie estruturas de if/else gigantes. Ele atua como uma cláusula de guarda: "Se for múltiplo de 4, imprima PIM, pule a rodada e nem olhe para o resto do código".

🔥 Dica Avançada (Conteúdo Sênior)

Em projetos reais, é comum termos loops dentro de loops (laços aninhados). O que acontece se você der um break; no loop de dentro? Ele só para o de dentro.

Mas o PHP permite que você diga quantos níveis quer quebrar ou pular usando break N; ou continue N;.

<?php
for ($i = 0; $i < 5; $i++) {
    for ($j = 0; $j < 5; $j++) {
        if ($i == 2 && $j == 2) {
            break 2; // Quebra os DOIS loops de uma vez!
        }
    }
}
?>

Isso é programação em alto nível!

Resumo: Qual usar e quando?

  • 🛑 Use BREAK quando: Você encontrou o dado que estava procurando (num banco de dados, num array) ou um erro crítico aconteceu e não faz sentido continuar verificando o resto.
  • ⏭️ Use CONTINUE quando: Você quer descartar itens inválidos ou aplicar regras específicas, mas precisa que o loop continue rodando até o final da fila.

Cuidado com os Erros de Principiante!

  • ⚠️ WHILE sem incremento + CONTINUE: Se você usar um continue dentro de um WHILE antes de incrementar o contador, o contador nunca vai subir e você criará um loop infinito travando a página.
  • ⚠️ Usar Break no lugar errado: Lembrar que ele aborta a missão. Não o use se a intenção for apenas pular um valor.

FOR ou WHILE no PHP? Entenda a Diferença Definitiva e Quando Usar

💡 O que você vai aprender nesta aula:

  • A diferença prática entre FOR e WHILE no PHP
  • Quando usar cada estrutura de repetição
  • Exemplos reais e comparativos
  • Boas práticas usadas por programadores profissionais

Qual a diferença entre FOR e WHILE no PHP? A principal diferença é que o FOR é usado quando você já sabe quantas vezes o loop vai executar, enquanto o WHILE é usado quando essa quantidade é desconhecida.

Essa é uma das dúvidas mais comuns de quem está aprendendo programação. E a verdade é simples: os dois fazem praticamente a mesma coisa, mas são usados em situações diferentes.

O que é um laço de repetição?

Antes de comparar, vamos alinhar o conceito:

Um laço (loop) é uma estrutura que repete um bloco de código enquanto uma condição for verdadeira.

Sem loops, você teria que escrever o mesmo código várias vezes — o que seria totalmente inviável em sistemas reais.

Como funciona o WHILE

O WHILE é o loop mais simples de entender:

<?php
$count = 1;

while($count <= 5){
    echo "Número: $count <br>";
    $count++;
}
?>

Ele funciona assim:

  • Verifica a condição
  • Se for verdadeira, executa o código
  • Repete até a condição ser falsa

💡 Dica: Se você esquecer de atualizar a variável ($count++), cria um loop infinito!

Como funciona o FOR

O FOR já organiza tudo em uma única linha:

<?php
for($count = 1; $count <= 5; $count++){
    echo "Número: $count <br>";
}
?>

Aqui temos três partes:

  • Inicialização: $count = 1
  • Condição: $count <= 5
  • Incremento: $count++

🛠️ Tudo isso em uma única estrutura deixa o código mais limpo e profissional.

🔥 Quer dominar loops de verdade?

Se você ainda trava na lógica ou não sabe quando usar FOR ou WHILE, você precisa praticar.

A Apostila PHP Progressivo tem dezenas de exercícios resolvidos passo a passo para você fixar isso de uma vez por todas.

Quero dominar loops →

Diferença entre FOR e WHILE (Resumo Rápido)

  • FOR: quando você sabe quantas repetições vão ocorrer
  • WHILE: quando não sabe exatamente quando vai parar

Mas vamos ver isso na prática 👇

Exemplo prático: FOR vs WHILE

Ambos códigos abaixo fazem exatamente a mesma coisa:

Usando WHILE

<?php
$i = 1;

while($i <= 3){
    echo "WHILE: $i <br>";
    $i++;
}
?>

Usando FOR

<?php
for($i = 1; $i <= 3; $i++){
    echo "FOR: $i <br>";
}
?>

👉 Resultado: exatamente o mesmo.

A diferença está na organização e intenção do código.

Quando usar FOR na prática?

Use FOR quando:

  • Você sabe o número de repetições
  • Vai percorrer listas, arrays ou contagens
  • Quer código mais organizado

Exemplo clássico: percorrer 100 registros.

Quando usar WHILE na prática?

Use WHILE quando:

  • Você não sabe quando o loop termina
  • Depende de uma condição externa (entrada do usuário, API, etc.)
  • Está lidando com eventos ou processos contínuos

Exemplo clássico: esperar até o usuário digitar um valor válido.

Erro comum de iniciantes ⚠️

Muita gente usa WHILE para tudo… e acaba criando código confuso.

💡 Regra de ouro:

  • Se você já sabe o início, fim e passo → use FOR
  • Se não sabe → use WHILE

Conclusão: Qual usar?

Não existe “melhor”. Existe o mais adequado para cada situação.

Mas na prática do mercado:

  • FOR é mais usado em 80% dos casos
  • WHILE aparece em situações mais específicas

Dominar os dois é essencial para evoluir na programação.


Como Criar uma Tabuada em PHP: Exercício Prático com FOR, WHILE e DO WHILE

💡 O que você vai aprender nesta aula:

  • Como criar uma tabuada em PHP passo a passo e de forma dinâmica.
  • A diferença prática (e visual) entre os laços WHILE, DO WHILE e FOR.
  • Qual estrutura de repetição os programadores seniores escolhem em cada situação.
  • Como capturar dados da URL de forma segura usando $_GET e o operador de coalescência nula.

Fala, dev! Se você quer testar se realmente entendeu como os laços de repetição funcionam, não existe exercício melhor do que este. Escrever uma tabuada vai forçar você a usar variáveis, matemática básica e controle de fluxo, tudo ao mesmo tempo.

Como fazer uma tabuada em PHP?

Para criar uma tabuada em PHP, basta usar uma estrutura de repetição (como o laço FOR) que percorra os números de 1 até 10, multiplicando cada um deles por uma variável base. O resultado de cada iteração é exibido na tela usando o comando echo.

Neste tutorial do Curso de PHP do Programação Progressiva, vamos resolver esse problema clássico de três formas diferentes, para você nunca mais ter dúvidas sobre loops.

Qual loop usar: WHILE, DO WHILE ou FOR?

Essa é uma dúvida que assombra 9 em cada 10 iniciantes em lógica de programação. Resumindo a ópera:

  • WHILE: Perfeito para quando você não sabe exatamente quantas repetições vão acontecer (ex: ler arquivos até acabar).
  • DO WHILE: Ideal quando o código precisa ser executado pelo menos uma vez, antes mesmo de testar a condição (ex: menus de opções).
  • FOR: O queridinho para quando você já sabe o início, o fim e o tamanho do passo (ex: exatamente o nosso caso da tabuada, que vai de 1 a 10).

A verdade nua e crua? Todos resolvem o problema da tabuada. A diferença está na elegância e na organização do seu código final.

Apostila PHP Progressivo

Cansado de depender de conexão com a internet para estudar? 📚

Lógica de programação se aprende com repetição e foco. Ficar abrindo mil abas no navegador só atrapalha. A Apostila PHP Progressivo foi criada para você baixar, estudar offline no seu ritmo e ter acesso imediato a dezenas de exercícios resolvidos (como esse da tabuada, mas muito mais avançados).

Economize tempo. Tenha a referência completa sempre à mão.

Baixar Apostila em PDF agora →

A Mágica do $_GET (Preparando o terreno)

Antes de criarmos os loops, repare nos códigos abaixo que usaremos a instrução $tabuada = $_GET['tab'] ?? 1;. Isso serve para pegarmos o número que o usuário digitou na URL (ou num formulário em PHP).

O operador ?? (coalescência nula) diz o seguinte: "Se o usuário não enviar nenhum número, faça a tabuada do 1 por padrão". Moderno e à prova de erros!

1. Tabuada com WHILE

Aqui, criamos o contador antes do laço e lembramos de incrementá-lo manualmente no final.

<?php
$tabuada = $_GET['tab'] ?? 1;
$count = 1;

while ($count <= 10) {
    echo "$tabuada x $count = " . ($tabuada * $count) . "<br>";
    $count++; // Se esquecer isso, o loop será infinito!
}
?>

💡 Dica: O WHILE verifica a condição primeiro. Se $count já começasse valendo 11, o bloco de código nem seria executado.

2. Tabuada com DO WHILE

Nesta abordagem, o PHP primeiro executa a conta e imprime na tela, e só depois se pergunta se deve repetir o processo.

<?php
$tabuada = $_GET['tab'] ?? 1;
$count = 1;

do {
    echo "$tabuada x $count = " . ($tabuada * $count) . "<br>";
    $count++;
} while ($count <= 10);
?>

⚠️ Atenção: Mesmo que a condição seja falsa desde o início, o DO WHILE obriga a execução da primeira linha. Use com cuidado em cálculos críticos!

3. Tabuada com FOR (A escolha dos profissionais)

Veja como o código fica limpo. Tudo que controla o loop (início, condição e incremento) está empacotado nos parênteses.

<?php
$tabuada = $_GET['tab'] ?? 1;

for ($count = 1; $count <= 10; $count++) {
    echo "$tabuada x $count = " . ($tabuada * $count) . "<br>";
}
?>

🛠️ Curiosidade: O FOR é o mais usado pelo mercado para este tipo de tarefa. Ele reduz a chance de esquecermos o incremento e deixa a leitura do código muito mais rápida para outro desenvolvedor que for dar manutenção no seu sistema.

Resumo: Qual a melhor opção para a Tabuada?

Como lidamos com um início (1) e um fim (10) claramente definidos, a melhor opção sem dúvidas é o FOR. Seu código fica mais limpo, previsível e profissional.

Mas parabéns por ter chegado até aqui! Entender que a lógica é soberana e que a ferramenta (o laço) apenas se adapta ao seu raciocínio é o que vai te transformar em um dev fora da curva.


Como Usar o Laço FOR no PHP: Guia Definitivo com Exercícios Práticos

🚀 O que você vai aprender nesta aula:

  • O que é o laço FOR no PHP e por que ele é mais "limpo" que o WHILE.
  • A anatomia do FOR: inicialização, condição e incremento explicados.
  • Como usar múltiplas variáveis dentro do mesmo loop (técnica avançada).
  • Respostas diretas para capturar o Featured Snippet do Google.
  • Desafios práticos para fixar o conteúdo na mente.

Fala, dev! Se você já passou pelas aulas de IF/ELSE e WHILE, parabéns: você já entende como o fluxo de um programa funciona. Mas hoje vamos subir o nível. Vamos falar do FOR, a estrutura preferida dos programadores quando o assunto é repetição com precisão cirúrgica.

O que é o Laço FOR em PHP?

O laço FOR é uma estrutura de controle de fluxo que permite executar um bloco de código repetidas vezes enquanto uma condição específica for atendida. Sua grande vantagem é reunir a inicialização do contador, o teste lógico e a atualização da variável em uma única linha de código.

Diferente do loop WHILE, onde você precisa gerenciar a variável de controle manualmente "fora e dentro" do bloco, o FOR mantém tudo organizado. Isso evita o famoso (e temido) loop infinito por esquecimento de incremento.

💡 Dica de Ouro: No dia a dia, use o FOR sempre que você já souber (ou puder calcular) exatamente quantas vezes aquela repetição deve acontecer. Para ler arquivos ou dados de banco de dados onde o fim é incerto, o WHILE costuma ser mais comum.

A Sintaxe do Sucesso

A estrutura básica do FOR no PHP segue este padrão:

<?php
for (inicialização; condição; incremento) {
    // Este código será repetido
}
?>
  1. Inicialização: Onde você cria sua variável "contadora" (ex: $i = 0). Executa apenas uma vez.
  2. Condição: O teste que o PHP faz antes de cada volta. Se for verdadeiro, ele entra no loop.
  3. Incremento: O que acontece ao final de cada volta (ex: somar +1 no contador).
Apostila PHP Progressivo

Teoria é bom, mas a prática te dá o emprego! 💼

Dominar laços de repetição é o que separa quem "brinca" de programar de quem cria algoritmos de alta performance. Na nossa Apostila PHP Progressivo, você encontra mais de 100 exercícios práticos focados em lógica real.

Não dependa apenas de tutoriais soltos. Tenha um guia estruturado.

🚀 Quero a Apostila e os Exercícios Exclusivos

Exemplos Práticos: Do Básico ao Avançado

1. Contagem Crescente Simples

Vamos imprimir números de 1 a 10. Note como o código é enxuto:

<?php
for ($count = 1; $count <= 10; $count++) {
    echo "Número: $count <br />";
}
?>

2. Contagem Regressiva

Para fazer o caminho inverso, iniciamos com o valor alto, mudamos o teste lógico e usamos o operador de decremento (--):

<?php
for ($count = 10; $count >= 1; $count--) {
    echo "Faltam $count segundos para o lançamento... <br />";
}
echo "Decolar! 🚀";
?>

3. Múltiplas Variáveis (O "Pulo do Gato")

Você sabia que o FOR permite controlar mais de uma variável ao mesmo tempo? Isso é extremamente útil em algoritmos de ordenação ou quando lidamos com matrizes em PHP.

<?php
// Inicializamos $i e $j simultaneamente
for ($i = 1, $j = 10; $i <= 10; $i++, $j--) {
    echo "I vale $i e J vale $j <br />";
}
?>

⚠️ Cuidado com a Condição: No exemplo acima, o loop continua enquanto $i <= 10 for verdade. Se você errar a lógica aqui, pode criar um loop que nunca termina, travando o processamento do servidor!

FOR vs WHILE: Qual a real diferença?

Embora ambos façam repetições, a escolha entre eles impacta na legibilidade do seu projeto:

  • Use FOR: Quando você tem um intervalo definido (ex: percorrer de 0 a 100, ler todos os itens de um Array).
  • Use WHILE: Quando a parada depende de uma condição externa (ex: enquanto o usuário estiver logado, enquanto houver linhas no banco de dados).

👉 Quer entender a fundo? Confira nosso post sobre a [INSERIR LINK: DIFERENÇA ENTRE FOR E WHILE].

🛠️ Desafio de Código:

Tente criar um loop FOR que imprima apenas os números pares de 0 a 20.
Dica: No incremento, em vez de $i++, você pode usar $i += 2.


Gostou da aula? Que tal oficializar seu conhecimento?

Certificado PHP Progressivo

Clique aqui para obter seu Certificado de Conclusão

Laço DO WHILE no PHP: A Diferença Crucial para o WHILE (Com Exemplos)

💡 O que você vai aprender hoje:

  • A diferença crucial entre os laços WHILE e DO WHILE.
  • O conceito de looping pré-condicionado vs. pós-condicionado.
  • Como garantir que um bloco de código rode pelo menos uma vez.
  • Aplicações práticas com contadores e formulários HTML no PHP.

No nosso Curso de PHP, já dissecamos o looping WHILE tradicional. Nele, deixamos uma regra clara: o código dentro do laço só é executado se o teste condicional for verdadeiro desde o início.

Mas e se você precisar que o código rode pelo menos uma vez antes de fazer qualquer pergunta? É exatamente para preencher essa lacuna lógica que existe o laço do...while.

Laço DO WHILE no PHP: O que é e para que serve?

O laço DO WHILE em PHP é uma estrutura de repetição pós-condicionada. Isso significa que ele executa o bloco de código internamente pelo menos uma vez antes de testar se a condição é verdadeira. Se a condição for falsa na primeira verificação, o laço para, mas o código já terá rodado aquela primeira vez.

[Image of do while loop flowchart]

Pense na diferença com a analogia do segurança de balada:

  • WHILE: O segurança pede sua identidade na porta. Se você não tiver idade (condição falsa), você nem entra. (Pré-condicionado).
  • DO WHILE: Você já está dentro da festa (o código roda). O segurança passa no meio do salão e pede a identidade. Se você não tiver, ele te expulsa, mas você já curtiu pelo menos alguns minutos. (Pós-condicionado).

Como usar o DO WHILE (Sintaxe)

A sintaxe é bem intuitiva se você traduzir do inglês: "Faça (do) este código, enquanto (while) esta condição for verdade".

<?php 
 do {
    // Código a ser executado ao menos uma vez
    // Lógica e incremento
 } while (teste_condicional);
?>

⚠️ Atenção dev iniciante: Repare no ponto e vírgula ; no final do while(). No laço WHILE tradicional nós não usamos ponto e vírgula ali, mas no DO WHILE ele é obrigatório para encerrar a instrução. Esquecer isso é um erro clássico que vai quebrar sua página!

Exemplo Prático 1: Executando no "Falso"

O script abaixo prova que a primeira iteração do laço sempre ocorre. A condição matemática 0 em PHP é tratada como FALSE. Mesmo assim, a mensagem vai aparecer na sua tela uma vez.

<?php 
 do {
    echo "Esta mensagem aparece, mesmo a condição sendo falsa!<br>";
 } while (0); // 0 equivale a FALSE em condicionais
?>

Bateu aquela dúvida de quando usar qual laço? 🤔

Saber a sintaxe é fácil, difícil é ter a visão de arquiteto para escolher entre FOR, WHILE e DO WHILE em um projeto real. Na Apostila PHP Progressivo, nós te damos dezenas de exercícios práticos offline para treinar sua lógica de programação até essas escolhas virarem instinto.

Baixar Apostila Completa e Exercícios →

Exemplo 2: Contagem Simples de 1 até 100

Claro, o uso mais comum ainda é criar repetições controladas. Veja como fica o clássico contador de 1 a 100 usando o laço pós-condicionado:

<?php 
  $count = 1;
  
  do {
      echo "Contagem atual: $count <br />";
      $count++; // Incremento essencial para não gerar loop infinito
  } while ($count <= 100);
?>

Exemplo 3: DO WHILE com entrada do Usuário (GET)

Uma aplicação fantástica para o do...while no desenvolvimento web real é a validação de menus e formulários (exibir a interface uma vez, e repetir caso o usuário digite algo errado). Abaixo, temos um script que pergunta ao usuário até onde ele quer contar.

🛠️ Curiosidade técnica: Usamos a VARIÁVEIS SUPERGLOBAIS GET $_GET para pegar o número digitado no formulário HTML e jogar dentro da nossa lógica PHP.

<html>
 <head>
  <title>Apostila PHP Progressivo - Contador Dinâmico</title>
 </head>
 <body>
  <!-- Formulário HTML -->
  <form action="" method="get">
   Deseja contar até qual número? 
   <input type="number" name="count" required /><br />
   <input type="submit" name="submit" value="Iniciar Contagem" />
  </form> 
  
  <hr>

<?php 
  // O código PHP só executa a lógica principal se o formulário for enviado
  if(isset($_GET['count'])) {
      $final = (int) $_GET['count']; // Casting para garantir que é um número inteiro
      $contador = 1;
      
      echo "<h3>Iniciando contagem até $final:</h3>";
      
      do {
          echo "Número: $contador <br />";
          $contador++;
      } while ($contador <= $final);
  }
?>
 </body>
</html>

Neste exemplo, modernize o input HTML para type="number" e adicionei a função isset() FUNÇÃO ISSET. Isso evita que o PHP lance um aviso na tela ("Notice") caso o usuário acesse a página pela primeira vez sem ter enviado o formulário.


Pronto para deixar sua lógica ainda mais limpa? O próximo laço é o favorito dos programadores.

Próxima Aula: O Laço FOR »

Laço WHILE no PHP: O Guia Definitivo com Exemplos Práticos e Loops

 

💡 O que você vai aprender hoje:

  • A diferença real entre um teste único (IF) e uma repetição (WHILE).
  • Como usar a sintaxe correta para evitar travamentos no servidor.
  • Exemplos práticos de contadores progressivos e regressivos.
  • O perigo (e a utilidade controlada) do Looping Infinito.

Na aula passada, vimos como os operadores de atribuição poupam nossos dedos. Agora, imagine que você precisa imprimir os números de 1 a 1 milhão. Você não vai escrever 1 milhão de linhas de código, certo? É aqui que entra o poder dos Loopings no PHP.

Laço WHILE no PHP: O que é e para que serve?

O laço WHILE é uma estrutura de repetição que executa um bloco de código repetidamente enquanto uma condição específica for verdadeira (TRUE). Diferente do IF, que testa a condição uma única vez, o WHILE reavalia a expressão a cada ciclo, parando apenas quando ela se torna falsa (FALSE).

[Image of while loop flowchart in programming]

Imagine o WHILE como um vigia: enquanto o sinal estiver verde (condição verdadeira), ele permite que o código continue rodando em círculos. Assim que o sinal fica vermelho, ele interrompe o fluxo imediatamente.

Como usar o WHILE (Sintaxe Moderna)

A estrutura do WHILE é limpa e direta. Veja como declarar no seu script:

<?php 
 while(teste_condicional){
    // O código aqui dentro se repete
    // Enquanto o teste resultar em TRUE
 }
?>

O PHP testa a condição entre parênteses. Se for verdade, ele executa o bloco entre chaves, volta ao topo e testa novamente. Esse ciclo se repete até que a condição não seja mais atendida.

Cuidado com o Looping Infinito!

Se você criar uma condição que nunca muda para falso, o PHP rodará o código até esgotar a memória do servidor ou travar o navegador do seu usuário. É o famoso "loop infinito".

<?php 
 // AVISO: Isso vai travar seu navegador!
 while(TRUE){
    echo "PHP Progressivo rodando para sempre... <br />";
 }
?>

Sua lógica travou ou o código deu nó? 🌀

Entender loopings é o que separa quem "brinca" de quem programa de verdade. Na Apostila PHP Progressivo, explicamos o WHILE, FOR e DO-WHILE com exercícios práticos e reais para você nunca mais travar um servidor.

Baixar Apostila Completa →

Exemplo Prático: Contador de 1 a 10

Para um loop útil, precisamos de uma variável de controle. Ela deve ser inicializada, testada e, o mais importante, incrementada.

<?php 
  $count = 1; // 1. Inicialização

  while($count <= 10){ // 2. Teste
    echo "Número: $count <br />";
    
    $count++; // 3. Incremento (Evita o loop infinito!)
  }
?>

🛠️ Curiosidade: Tente mudar o $count++ para $count += 2. O que acontece? Você terá um contador apenas de números ímpares! O PHP te dá liberdade total sobre o passo da repetição.

Desafio: Validação com Senha

Loopings também servem para validar dados. Enquanto a condição de "senha correta" não for atingida, o sistema pode insistir na cobrança (logicamente, em sistemas reais, usamos isso para fluxos de tentativas).

<?php 
  $senha_correta = 'rush2112';
  $senha_digitada = $_GET['password'] ?? '';

  while($senha_digitada != $senha_correta && $senha_digitada != ''){
      echo "Acesso Negado! Digite novamente.<br />";
      // No mundo real, aqui interrompemos para nova entrada
      break; 
  }
  
  if($senha_digitada === $senha_correta) {
      echo "<strong>Entrando no sistema...</strong>";
  }
?>

Dominou o WHILE? Então você está pronto para o laço FOR, que é ainda mais organizado!

Próxima Aula: Laço DO WHILE »

Veja também: