If, else e elseif em PHP

Nenhum produto encontrado nessa seleção.

If, else e elseif em PHP são desvios condicionais para controlar o fluxo do seu código. Com eles você pode fazer com que uma ação seja executada dependendo do resultado de uma, ou várias condições.

As condições sempre vão retornar um valor verdadeiro (true) ou falso (false) dependendo dos operadores que você utilizar. Dentre eles, temos os Operadores de comparação e os Operadores lógicos.

Os operadores de comparação são capazes de comparar os valores (se são maiores, menores ou iguais) e os lógicos servem para verificar mais de uma condição.

Vamos ver como utilizar os comandos if, else e elseif em PHP.

IF em PHP

If significa "se" em inglês, ou seja, você sempre vai utilizar este comando condicional para testar condições desse tipo (se isso acontecer, faça isso).

Dica: Para evitar que seu código fique confuso, evite testar condições que não são verdadeiras (com o operador de negação !), só faça quando for necessário.

Para testar qualquer condição, você deve utilizar o seguinte formato:

if ( condição ) {
	ação
}

Perceba que as condições devem vir entre parênteses ( e ), as ações a serem realizadas se a condição suprir a necessidade vêm entre chaves { e }.

Por exemplo:

<?php
// Variáveis numéricas
$a = 1;
$b = 2;

// Verifica se $b é maior que $a
if ( $b > $a ) {
	echo '$b é maior que $a';
}

No trecho de código acima, estou testando a condição se (if) $b é maior que $a ($b > $a). Essa condição utiliza o operador de comparação > (maior que), e, nesse caso, vai retornar um valor verdadeiro, pois, $b (2) é maior que $a (1).

A ação que escolhi executar foi simples, exibir o texto "$b é maior que $a" na tela do navegador com o comando echo.

Se você inverter os valores de $b e $a, não verá nada na tela, porque $b não será maior que $a:

<?php
// Variáveis numéricas
$a = 2;
$b = 1;

// Verifica se $b é maior que $a
if ( $b > $a ) {
	echo '$b é maior que $a';
}

Nesse caso, o valor retornado pela condição é falso (false) e a ação não é executada.

Você também pode testar várias condições utilizando os operadores lógicos, veja um exemplo:

<?php
// Variáveis numéricas
$a = 2;
$b = 1;
$c = 2;

// Verifica se $b é menor ou igual a $a
// E se $b é maior que $c
if ( $b <= $a && $b < $c ) {
	echo '$b é menor ou igual a $a.';
	echo '$b é menor que $c.';
}

Perceba acima que as condições agora vêm separadas por operadores lógicos, e eles vão controlar como o comando if vai se comportar.

No trecho de código acima, verifiquei se $b é menor ou igual (<=) a $a e (&&) se $b é menor que (<) $c.

Como o operador lógico && precisa que ambas as condições retornem um valor verdadeiro, as frases "$b é menor ou igual a $a." e "$b é menor que $c." serão exibidas na tela do navegador.

Você pode utilizar qualquer coisa que retorne um valor booleano para as condições, tais como funções, variáveis, arrays e assim por diante.

Duas funções que são bastante utilizadas para testar condições em PHP, são isset, para verificar se uma variável foi configurada, e empty, para verificar se o valor da variável é nulo (vazio).

Veja um exemplo:

<?php
// Variáveis numéricas
$a = 'Qualquer valor';

// Verifica se $a está configurada e se NÃO (!) é vazia
if ( isset( $a ) && ! empty( $a ) ) {
	echo '$a está configurada.';
	echo '$a tem o valor: ' . $a;
}

A primeira condição (se $a está configurada) vai retornar um valor verdadeiro, pois, $a está configurada; a segunda parte da condição verifica um valor negativo (ao contrário do que a função vai retornar). Nesse caso, a função empty vai verificar se $a está vazio, mas com a adição do operador de negação (!), a condição se torna "se $a NÃO está vazio". Como $a não está vazio, terei um valor verdadeiro retornado. A ação será executada e o usuário verá as frases "$a está configurada." e "$a tem o valor: Qualquer valor." na tela do navegador.

If e else em PHP

Como você viu anteriormente, if faz o teste das condições, porém, se as mesmas não passarem, nenhuma ação é executada. Para resolver este problema, você pode utilizar else.

Else significa "se não" em inglês, e precisa de um if para ser utilizado. Com ele você pode fazer condições do tipo "se (if) isso for verdadeiro, faça aquilo; SE NÃO (else), faça isso".

Else deve ser utilizado da seguinte maneira:

if ( condição ) {
	Ação
} else { 
	Outra ação
}

E a ação dentro das chaves { e } de else, só serão executadas se as condições não suprirem o if anterior. Exemplo:

<?php
$a = 'Oi';

if ( $a === 'Olá' ) {
	echo $a;
} else { 
	echo 'Tchau';
}

No trecho de código acima, estou verificando se $a é idêntico (===) a 'Olá', porém, $a é idêntico a 'Oi', ou seja, o valor retornado será falso e a ação de if não será executada. Mas, como adicionei um else ao final do if, a ação de else agora será executada e o usuário verá "Tchau" na tela.

Se eu mudar o trecho de código para o seguinte:

<?php
$a = 'Oi';

if ( $a === 'Oi' ) {
	echo $a;
} else { 
	echo 'Tchau';
}

Ao invés de verificar se $a é idêntico a 'Olá', agora estou verificando se $a é idêntico a 'Oi', o que vai retornar um valor verdadeiro. Agora a ação de else não será mais executada, e sim a de if, pois, a condição supriu os requisitos.

Dicas:

  • Else só pode ser utilizado se você utilizar um if antes;
  • Else só pode ser utilizado uma vez, e sempre é a última ação a ser executada caso nenhuma das condições anteriores seja suprida.

If, else e elseif em PHP

Pode acontecer casos em que você precise verificar mais de uma condição e executar uma ação para cada uma, neste caso, é possível utiliza elseif.

Elseif não tem significado em inglês, mas seria a junção das palavras if (se) e else (se não), então, poderíamos fazer uma tradução livre para "mas se" (nada a ver, mas no código é assim que funciona). Ou seja, com elseif fazemos testes condicionais do tipo: "Se (if) isso for verdadeiro, faça isso; MAS SE (elseif) isso for verdadeiro, faça isso; se não (else) faça isso."

Assim como else, elseif precisa de um if para existir; o else é opcional neste caso.

Sua estrutura é a seguinte:

if ( primeira condição ) {
	Primeira ação
} elseif ( segunda condição ) {
	Segunda Ação
} elseif ( terceira condição ) {
	Terceira Ação
} elseif ( Quantas condições precisar ) {
	Ação a ser executada
} else { 
	Ação padrão
}

Você pode utilizar quantas combinações de elseif precisar, e, como disse anteriormente, else não é obrigatório. Veja um exemplo:

<?php
$a = 10;

if ( $a == 1 ) {
	echo '$a vale 1';
} elseif ( $a == 2 ) {
	echo '$a vale 2';
} elseif ( $a == 10 ) {
	echo '$a vale 10';
}
?>

Perceba que no trecho acima, testo 3 condições, se $a é igual a 1, se $a é igual a 2 e se $a é igual a 10. Apenas a última condição será avaliada como verdadeira, pois, como sabemos, $a vale 10. Portanto, apenas a ação do último elseif será executada.

Lembre-se que apenas uma ação é executada quando você utiliza if, else e elseif em PHP, portanto, se a primeira condição suprir a necessidade, apenas sua ação será executada e todas as outras condições serão puladas pelo interpretador do PHP.

Se você quiser que várias ações sejam executadas dependendo de condições, pode utilizar vários ifs separados. Veja:

if ( $a == 1 ) {
	echo '$a vale 1';
} 

if ( $a == 2 ) {
	echo '$a vale 2';
} 

if ( $a == 10 ) {
	echo '$a vale 10';
}

Neste caso, mesmo que uma condição seja suprida, todas as outras também serão verificadas pelo interpretador do PHP.

IF e else em uma linha

Quando você tem ações que são muito pequenas, é possível utilizar o if e else em apenas uma linha.

Veja o formato:

<?php
$a = 10;
$b = isset( $a ) && !empty( $a ) ? $a * 2 : 10;

// $b = $a * 2;
// Exibe 20 na tela
echo $b;
?>

A estrutura é a seguinte:

condição ? ação do if : ação do else;

Veja outro exemplo:

<?php
$a = 10;
echo $a == 10 ? $a / 2 : null;
?>

No trecho acima, o echo será executado de qualquer maneira, porém, se $a for igual (==) a 10, exibe 5 na tela ($a / 2), caso contrário, um valor nulo (vazio) é exibido.

Estrutura utilizada no WordPress

Se você já viu algum arquivo do WordPress, vai perceber que eles utilizam outra estrutura para o if.

<?php
$a = 10;

if ($a == 10):
	echo '$a vale 10';
endif; 
?>

Neste caso, ao invés de chaves { e } para a ação, utilizamos dois pontos (:) e, ao finalizar, a palavra endif;.

Isso é válido para if, else e elseif, veja outro exemplo:

<?php
$a = 10;

if ($a == 2):
	echo '$a vale 2';
elseif( $a == 5 ):
	echo '$a vale 5';
else:
	echo '$a não vale 2 nem 5.';
endif; 
?>

Isso é muito utilizado para intercalar HTML e PHP no mesmo arquivo, por exemplo:

<div class="post">
	<?php if ( isset( $a ) ): ?>
		<p>$a existe.</p>
	<?php else: ?>
		<p>$a não existe.</a>
	<?php endif; ?>
</div>

E, como eu disse, é a estrutura que os desenvolvedores utilizam no WordPress.

Aulas anteriores

Veja todas as aulas, e mais, na categoria Curso de PHP do Tutsup.