Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Duvida sobre sintaxe aplicada

Boa tarde, não entendi muito bem a sintaxe do código abaixo:

<?php foreach($categorias as $categoria) : 
    $essaEhACategoria = $produto['categoria_id'] == $categoria['id'];
    $selecao = $essaEhACategoria ? "selected='selected'" : "";
 ?>

Eu achei mais fácil, e também mais legível usar um IF:

<?php foreach ($categorias as $categoria) :
    if ($produto['categoria_id'] == $categoria['id']) {
        $selecao = "selected='selected'";
    } else {
        $selecao = "";
    }
?>

Tem alguma diferença? Pois pelo que vi o resultado foi o mesmo, pois não entendi a linha 2:

$essaEhACategoria = $produto['categoria_id'] == $categoria['id'];

Isso seria uma variável recebendo um teste logico de igualdade (recebendo o valor true)?

4 respostas

Oi Augustus, tudo bom?

Realmente, não há diferença. São apenas formas diferentes de escrever a mesma coisa. A sintaxe do if é apenas um pouco mais verbosa. Já a outra, que chamamos de if ternario, é mais resumida.

No if ternario temos uma estrutura da seguinte forma:

  $variavel =  condição ? casoACondiçãoSejaVerdadeira : casoACondiçãoSejaFalsa;

Que, escrito da forma mais verbosa seria:

if(condição){
    $variavel = casoACondiçãoSejaVerdadeira
} else {
    $variavel = casoACondiçãoSejaFalsa
}

Mas, de qualquer forma, você pode utilizar o que for mais natural pra você =)

Abraço e bons estudos

Oi André Chaves, sobre o ternário não tive duvidas, pois já usei ele muito em C, a sintaxe é igual até.

Minha duvida, seria em relação ao:

$essaEhACategoria = $produto['categoria_id'] == $categoria['id'];

Isso seria uma variável recebendo um teste logico de igualdade (recebendo o valor true)?

solução!

Entendi!

Exatamente, a variavel $essaEhACategoria guarda o resultado booleano da comparação

$produto['categoria_id'] == $categoria['id']

=)

Obrigado pelo retorno André Chaves, não sabia que era possível fazer essa condição direta na variável.