W3docs

if

A palavra-chave "if" é usada em PHP para executar código condicionalmente. Neste artigo, exploramos a sintaxe e o uso do "if" em PHP.

A instrução if do PHP

A instrução if é a forma como um programa PHP toma decisões. Ela executa um bloco de código somente quando uma condição é verdadeira, e o ignora caso contrário. Sem ela, um script executaria cada linha de cima para baixo sem nenhuma forma de ramificar — if é a base de toda a lógica condicional em PHP.

Este guia aborda a sintaxe, como o PHP decide se uma condição é "verdadeira", a família else/elseif, a sintaxe alternativa endif para templates, atalhos como os operadores ternário e de coalescência nula, e os erros que confundem iniciantes.

Sintaxe básica

if (condition) {
  // code that runs only when condition is true
}

A condition é qualquer expressão que o PHP possa avaliar como verdadeira ou falsa. Se for verdadeira, o código dentro das chaves é executado; se for falsa, o PHP ignora o bloco e continua após ele.

<?php
$age = 20;

if ($age >= 18) {
  echo "You are an adult.";
}
// Output: You are an adult.

As chaves são opcionais quando o corpo é uma única instrução, mas sempre as use — omitir as chaves é uma fonte comum de bugs, pois apenas a primeira instrução é tratada como corpo:

if ($age >= 18)
  echo "Adult";        // runs conditionally
  echo " — welcome";   // ⚠️ runs ALWAYS, it is not part of the if

Como o PHP avalia condições (truthy e falsy)

Uma condição não precisa ser um true/false literal — o PHP converte qualquer valor para boolean. Estes valores são falsy (tratados como falso):

  • false
  • 0 e 0.0
  • "" (string vazia) e "0"
  • null
  • um array vazio []

Qualquer outro valor é truthy. Isso permite escrever verificações compactas:

<?php
$name = "";

if ($name) {
  echo "Hello, $name";
} else {
  echo "No name provided.";   // empty string is falsy
}
// Output: No name provided.

Para construir condições, você normalmente usa operadores de comparação e lógicos. Consulte Operadores PHP para a lista completa.

<?php
$temp = 30;

if ($temp > 25 && $temp < 35) {     // logical AND
  echo "Warm but comfortable.";
}
// Output: Warm but comfortable.

Adicionando else e elseif

if sozinho lida com um único caminho. Para fornecer um fallback, adicione else; para testar várias condições em sequência, encadeie elseif:

<?php
$score = 72;

if ($score >= 90) {
  echo "Grade: A";
} elseif ($score >= 70) {
  echo "Grade: B";
} elseif ($score >= 50) {
  echo "Grade: C";
} else {
  echo "Grade: F";
}
// Output: Grade: B

O PHP verifica cada condição de cima para baixo e executa o primeiro bloco cuja condição seja verdadeira, depois para. Como $score é 72, o teste >= 90 falha, >= 70 é aprovado e o restante é ignorado.

Para capítulos dedicados sobre isso, consulte PHP else, PHP elseif e o guia completo if...elseif...else. Quando você tem muitos valores fixos para comparar com uma variável, uma instrução switch costuma ser mais clara.

Aninhando instruções if

Você pode colocar um if dentro de outro para testar uma segunda condição apenas quando a primeira for aprovada:

<?php
$loggedIn = true;
$role = "admin";

if ($loggedIn) {
  if ($role === "admin") {
    echo "Welcome to the admin panel.";
  } else {
    echo "Welcome back.";
  }
}
// Output: Welcome to the admin panel.

Aninhamento profundo prejudica a legibilidade — se você se encontrar três níveis abaixo, considere combinar condições com && ou retornar antecipadamente.

Sintaxe alternativa (if: / endif)

Ao misturar PHP com HTML em templates, a forma com dois-pontos e endif é mais fácil de ler do que chaves espalhadas:

<?php if ($loggedIn): ?>
  <p>Welcome back!</p>
<?php else: ?>
  <p>Please log in.</p>
<?php endif; ?>

Isso se comporta exatamente como a versão com chaves; é puramente uma questão de estilo para arquivos de view.

Atalhos: ternário e coalescência nula

Para atribuições simples de "um ou outro", o operador ternário condensa um if/else em uma única linha:

<?php
$age = 16;
$status = ($age >= 18) ? "adult" : "minor";
echo $status;
// Output: minor

Quando você se importa apenas se um valor existe (e não é null), o operador de coalescência nula ?? é mais limpo do que um if (isset(...)):

<?php
$config = [];
$timeout = $config["timeout"] ?? 30;   // use 30 if the key is missing
echo $timeout;
// Output: 30

Exemplos práticos

<?php

// Example 1
$num = 10;

if ($num > 5) {
  echo "The number is greater than 5." . PHP_EOL;
}

// Output: The number is greater than 5.

// Example 2
$color = "red";

if ($color == "blue") {
  echo "The color is blue.";
} else {
  echo "The color is not blue.";
}

// Output: The color is not blue.

Erros comuns

  • = em vez de ==. if ($x = 5) atribui 5 a $x e é sempre truthy. Use == (sem tipo estrito) ou === (estrito, sem conversão de tipos) para comparar.
  • == vs ===. Com ==, 0 == "hello" e "1" == 1 podem surpreender porque o PHP converte tipos. Prefira === quando os tipos devem ser iguais.
  • Chaves ausentes ao redor de um corpo com várias linhas — apenas a primeira instrução é condicional.
  • Confundir valores truthy. if ($value) é falso para 0, "" e []; use isset() ou === null quando você quer dizer especificamente "isso existe."

Conclusão

A instrução if permite que um programa PHP escolha o que fazer em tempo de execução. Domine as regras truthy/falsy, recorra a elseif/else para lidar com múltiplos caminhos, use a sintaxe alternativa endif em templates e apoie-se nos operadores ternário e ?? para atribuições concisas. A partir daqui, explore os loops PHP para repetir ações e a instrução switch para ramificação baseada em valores.

Prática

Prática
Em PHP, como você pode fazer o programa decidir qual bloco de código executar?
Em PHP, como você pode fazer o programa decidir qual bloco de código executar?
Was this page helpful?