Observe o código PHP abaixo:<?php$nome = "Jhon";$email = "[email protected]";if (empty(nome) && empty(email) && empty($mensagem)){echo "Por favor, preencha todos os campos.";} else {echo "O formulário foi preenchido corretamente!";}?>Apesar da variável $mensagem não ter sido nem declarada, é apresentada a mensagem “O formulário foi preenchido corretamente!”. Qual das linhas abaixo apresenta uma modificação que corrigiria o comportamento do programa para que apresentasse a mensagem, pedindo o preenchimento dos campos quando algum não estivesse preenchido e que apresentasse a mensagem "O formulário foi preenchido corretamente!" quando todos os campos fossem preenchidos?
GabaritoE — if (empty($nome) || empty($email) || empty($mensagem))
Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.
PHP: lógica condicional com empty()
Gabarito: letra E. O código original usa o operador && (E lógico) para verificar se todas as variáveis estão vazias, mas como $nome e $email possuem valores, a condição torna-se falsa e exibe a mensagem de sucesso mesmo com $mensagem não declarada. O comportamento desejado é exibir erro se qualquer campo estiver vazio, o que exige o operador || (OU). A alternativa E substitui corretamente && por ||.
A função empty() em PHP retorna true para variáveis: vazias ("", 0, "0", null, false, array()), não definidas, ou com valor zero. Como $mensagem não foi declarada, empty($mensagem) retorna true. No código original: empty($nome) é false (valor "Jhon"), empty($email) é false (valor "[email protected]"), e empty($mensagem) é true. A expressão false && false && true = false, executando o else e exibindo "O formulário foi preenchido corretamente!", o que está incorreto.
Alternativa A — ❌ Incorreta
if (isset($nome) && isset($email) && isset($mensagem)) — isset() retorna false para variáveis não definidas (sem emitir warning). Como $mensagem não existe, a condição é false, executando o else (sucesso) mesmo com campos faltando. Não corrige.
Alternativa B — ❌ Incorreta
if (!isset($nome) && !isset($email) && isset($mensagem)) — Para as variáveis dadas, !isset($nome) é false (pois está definida), e !isset($email) também false, e isset($mensagem) é false. A condição é false && false && false = false, executando else (sucesso). Mais uma vez, não tratou a ausência de $mensagem.
Alternativa C — ❌ Incorreta
if (!empty($nome) && !empty($email) && !empty($mensagem)) — Verifica se todos estão preenchidos. Com $mensagem vazia, a condição é true && true && false = false, executando else e exibindo sucesso. O correto seria exibir erro. Inverte a lógica.
Alternativa D — ❌ Incorreta
if (!empty($nome) || !empty($email) || empty($mensagem)) — Com $nome e $email preenchidos, a primeira parte !empty($nome) é true, e como é um ||, toda a expressão é true, exibindo erro. Porém, se todos os campos estivessem preenchidos (incluindo $mensagem), teríamos true || true || false = true, e exibiria erro indevidamente. Não resolve.
Alternativa E — ✅ Correta ⟵ GABARITO
if (empty($nome) || empty($email) || empty($mensagem)) — Se qualquer campo estiver vazio (ou não declarado), a condição é verdadeira e exibe a mensagem de erro. Se todos estiverem preenchidos (todos empty() retornam false), a condição é falsa e exibe sucesso. Corrige o comportamento conforme o enunciado.
NÃO CAIA NESSA!
A banca troca o operador lógico && (E) por || (OU). O candidato pode ser tentado a manter && ou usar !empty(), mas o raciocínio correto é: se algum campo está vazio, deve mostrar erro. Portanto, use || e não &&.