elseif
A palavra-chave "elseif" é uma estrutura de controle em PHP usada com "if" para executar um bloco de código quando a condição "if" é falsa
A Palavra-chave elseif do PHP
elseif é uma estrutura de controle em PHP que adiciona uma condição extra a uma instrução if. Ela executa seu bloco somente quando todas as condições anteriores foram falsas e sua própria condição é verdadeira. Você pode encadear quantas cláusulas elseif precisar, terminando opcionalmente com um else que captura todo o restante.
Esta página aborda a sintaxe, como as condições são avaliadas em ordem, a sintaxe alternativa com dois-pontos, a distinção entre elseif e else if (algo fácil de errar), e armadilhas comuns.
Sintaxe
<?php
if (condition1) {
// runs if condition1 is true
} elseif (condition2) {
// runs if condition1 is false AND condition2 is true
} elseif (condition3) {
// runs if condition1 and condition2 are false AND condition3 is true
} else {
// runs if none of the above conditions are true
}PHP avalia as condições de cima para baixo e para na primeira que for verdadeira — esse bloco é executado e o restante da cadeia (incluindo else) é ignorado. O else no final é opcional; sem ele, nada acontece quando todas as condições são falsas.
Um exemplo básico
<?php
$myNumber = 5;
if ($myNumber == 4) {
echo "Number is 4";
} elseif ($myNumber == 5) {
echo "Number is 5";
} else {
echo "Number is not 4 or 5";
}
// Output: Number is 5Como $myNumber == 4 é falso, mas $myNumber == 5 é verdadeiro, o segundo bloco é executado e o else nunca é alcançado.
Encadeando múltiplas condições
elseif é muito útil quando você precisa mapear um valor em vários intervalos mutuamente exclusivos. O primeiro ramo correspondente vence, portanto ordene suas condições do mais específico para o menos específico:
<?php
$score = 82;
if ($score >= 90) {
$grade = "A";
} elseif ($score >= 80) {
$grade = "B";
} elseif ($score >= 70) {
$grade = "C";
} else {
$grade = "F";
}
echo "Grade: {$grade}";
// Output: Grade: BUma pontuação de 82 falha no primeiro teste (>= 90) mas passa no segundo (>= 80), então $grade se torna "B" e os ramos restantes são ignorados.
elseif vs else if
PHP aceita tanto elseif (uma palavra) quanto else if (duas palavras) — eles se comportam de forma idêntica quando você usa chaves:
<?php
$x = 2;
if ($x === 1) {
echo "one";
} else if ($x === 2) { // same as elseif
echo "two";
}
// Output: twoA exceção é a sintaxe alternativa com dois-pontos (veja abaixo): nesse caso, você deve escrever elseif como uma única palavra. else if é um erro de sintaxe dentro de um bloco if: ... endif;. Para evitar surpresas, muitos guias de estilo recomendam sempre usar o elseif de uma única palavra.
Sintaxe alternativa (com dois-pontos)
Ao misturar PHP com HTML em templates, a sintaxe com dois-pontos costuma ser mais fácil de ler do que chaves. Ela usa endif; para fechar o bloco:
<?php
$role = "editor";
if ($role === "admin"):
echo "Full access";
elseif ($role === "editor"):
echo "Can edit content";
else:
echo "Read only";
endif;
// Output: Can edit contentIsso se combina naturalmente com a palavra-chave endif em templates HTML. Leia mais na visão geral de if / else / elseif.
Armadilhas comuns
=vs==. Dentro de uma condição,=atribui em vez de comparar. Use==para comparação frouxa ou===para comparação estrita (com verificação de tipo).- A ordem importa. Como o primeiro ramo verdadeiro vence, uma condição ampla colocada cedo pode ocultar as mais específicas abaixo dela. No exemplo de notas, colocar
$score >= 70primeiro classificaria toda pontuação aprovada como"C". elseifprecisa de umifanterior. Ele não pode estar sozinho — sempre pertence a uma cadeiaifexistente.
Quando usar elseif vs switch
Use elseif para intervalos, condições combinadas ou testes contra variáveis diferentes. Quando você estiver comparando um único valor contra muitas opções fixas, uma instrução switch costuma ser mais limpa.
Veja também
if— a instrução queelseifestendeelse— o ramo de fallback que captura todo o restanteendif— fecha a forma de sintaxe com dois-pontosswitch— ramificação múltipla em um único valor