Ir para conteúdo
Fórum Script Brasil
  • 0

Dúvida de iniciante (Switch VS IF/Elseif)


Lucas Atolini

Pergunta

Caros, podem me ajudar? 

O algoritmo deve verificar se o valor da variável é positivo, negativo ou igual a zero. 

O código a seguir funciona corretamente: 

<?php
$val = -69; //Valor de entrada
$resultado = "";
if($val > 0){
 $resultado = "Valor Positivo";
}elseif($val < 0){
 $resultado = "Valor Negativo";
}else{
 $resultado = "Igual a Zero";
}
echo $resultado;
?>

O código a seguir não funciona, ele imprime sempre "Valor Positivo". 

Podem me ajudar a compreender? 

$digitado = 0;
$digitado = (int) $digitado;
$resultado = "";
 
switch($digitado) {
   
    case $digitado > 0:
        $resultado = "Valor Positivo";
    break;
 
    case $digitado < 0;  
        $resultado = "Valor Negativo";
    break;
 
    default:
        $resultado = "Igual a Zero";
   }
 
   echo $resultado;
Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Use match
 

<?php
  $digitado = 0;

  $resultado = match ($digitado) {
    $digitado > 0 => "Valor Positivo",
    $digitado < 0 => "Valor Negativo",
    default => "Igual a Zero",
  };

  echo $resultado;

 

Link para o comentário
Compartilhar em outros sites

  • 0

O switch case avalia apenas um único valor.
No caso específico que você enviou, será analisado o resultado da conta, que é um bool
É bem mais complicado ficar fazendo operações aritméticas dentro de um switch.
É muita gambiarra. Há formas melhores do que switch.
Já ouvi muita gente dizendo que trabalhou em sistemas enormes a vida inteira e nunca usaram switch.
Sugestão de solução:
 

<?php
  $digitado = 0;

  $result = '';

  switch($digitado) {

    case ($digitado > 0 ? $digitado : -1):
      $result = 'Valor Positivo';
      break;

    case ($digitado < 0 ? $digitado : 1);
      $result = 'Valor Negativo';
      break;

    default:
      $result = 'Igual a Zero';
  }

  echo $result;

 

Editado por wash
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...