Ir para conteúdo
totis

Duvida Super Iniciante (SWITCH)

Recommended Posts

Olá amigos, preciso de uma ajuda, sou iniciante em programação e php, bem iniciante mesmo.

 

Estou fazendo um exercício de switch estou com uma duvida que não consigo resolver.

 

Então, a duvida é a seguinte, eu posso colocar qualquer numero em $anoNasc que o código está rodando certinho,

porém quando eu coloco um número igual ao $anoAtual não está dando certo...

nesse caso a $idade daria "0", porém o resultado não está sendo "Você é uma criança" e sim está sendo "Você é um adolescente".

 

Onde estou errando?

 

        <?php
            $anoNasc = 2020;
            $anoAtual = 2020;
            $idade = ($anoAtual - $anoNasc);
                       
            switch($idade):
                case ($idade >= 0) and ($idade < 14):
                    echo "Você é uma criança";     
                    break;
                case ($idade >= 14) and ($idade < 18):
                    echo "Você é um adolescente";                    
                    break;
                case ($idade >= 18) and ($idade < 60):
                    echo "Você é adulto";
                    break;
                case $idade >= 60:
                    echo "Você é idoso";
                    break;
                default:
                    echo "Você não nasceu";
            endswitch;
        ?>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Salve, na verdade eu creio que seja um erro de lógica , tenta a versão que corrigi e ve se da o resultado esperado ... 

			$anoNasc = 2050;
            $anoAtual = 2050;
            $idade = ($anoAtual - $anoNasc);
                       
            switch($idade):
                case ($idade >= 1) and ($idade < 14):
                    echo "Você é uma criança";     
                    break;
                case ($idade >= 14) and ($idade < 18):
                    echo "Você é um adolescente";                    
                    break;
                case ($idade >= 18) and ($idade < 60):
                    echo "Você é adulto";
                    break;
                case $idade >= 60:
                    echo "Você é idoso";
                    break;
                default:
                    echo "Você não nasceu";
            endswitch;

O problema é o Primeiro case que você gerou uma comparação de > ou = a 0 e isso gerou um conflito com o Default e adolescente , se tornar essa condição só > 0 ou melhor , >= 1 ele se torna correto , tentei todas idade aqui e agora deu certo.. verificar se é isso mesmo qualquer coisa só falar ..

 

Abraços, tudo de bom =)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde!
É importante entender como o php converte para booleanos, para evitar pegadinhas

var_dump(0 == true); // false
var_dump(1 == true); // true
var_dump(1 === true); // false
var_dump(-1 == true); // true

 

Não deixe de ver: http://us2.php.net/manual/en/language.types.boolean.php
 

No caso do switch, ele faz comparação fraca (==)


Sendo o valor de idade, zero:

($idade >= 0) and ($idade < 14) # isso retornara um true, e zero com true é igual a false. 
# Reiterando: 
var_dump(0 == true); # retornara um false 

Veja mais em:
Http://www.php.net/manual/en/types.comparisons.php#types.comparisions-loose
 

Por esse motivo que não entrava na primeira condição.

@Webr, mudar: 
case ($idade >= 0) and ($idade < 14):
para
case ($idade >= 1) and ($idade < 14):
Apesar de fazer cair na primeira condição, esta errado, pelo simples fato de zero ser menor do que 1

  • +1 3

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por Diogo92
      Bom dia.
       
      Me formei em Sistemas de informação em 2013, mas nunca consegui trabalhar na área.
      Consegui um emprego fora da área, e com a dificuldade de conseguir emprego na área acabei ficando acomodado nesse meu atual emprego e não tive contato mais com programação.
      Na época que fiz a faculdade a área que eu mais se identifiquei foi com a programação web onde aprendi um pouco de PHP e HTML.
      Estou com 27 anos, moro em São Paulo Capital e esse ano tomei a decisão de tentar entrar na área de programação novamente.
       
      Vocês acham que vale a pena aprender PHP agora ou seria melhor aprender outra linguagem?
      Se sim, alguem sabe algum lugar onde tenha um bom curso (de preferencia presencial) por onde eu possa começar?
       
      Estou cheio de dúvidas e não sei por onde começar.
       
      Obrigado.
       
       
       
       
    • Por ABGui
      Oi, gostaria de saber que tipo de classe ou função eu posso usar de forma que crie no site uma sessão de artigos ou postagens que possam ser alteradas ou adicionadas pelo administrador do site sem a necessidade de acesso ao código PHP. 
      Mais ou menos como se fosse uma opção para adicionar mais posts à página principal, e que os mais antigos fossem guardados em uma aba de postagens antigas ou algo assim. 
      O foco está no usuário poder adicionar sem a minha interferência 
      Desde já obrigado. 
    • Por ABGui
      Oi, tenho uma dúvida bem simples mas que eu não tenho ideia de como resolver devido a falta de experiência. 
      Tenho o domínio do site comprado e registrado, estou programando o site à base de um template em CakePHP (dscp pela marcação errada). 
      A minha dúvida é, como eu faço para 'upar' o site depois de programado vinculado ao domínio, e se isso deve ser feito antes, durante ou depois da programação estar concluída. 
      Desde já obrigado
    • Por user2112
      Pessoal, estou iniciando em JS e fazendo meus scripts no bloco de notas mesmo. Depois vou simplesmente abrir o .html pra ver o resultado.
       
      Mas as vezes ocorre de eu atualizar o arquivo .js e quando vou rodar o .html, ele ainda não atualizou minha mudança, como se tivesse cacheado uma versão antiga do .html
      Então tenho que dar refresh várias e várias vezes pra ver a mudança.
       
      Como vocês lidavam com isso?
    • Por kleinfelipe1
      Estou desenvolvendo um site onde os participantes cumprem desafios, e eu preciso que, depois que o participante enviou o video, o status dele seja 1. E depois de 24 horas do vídeo enviado, volte a ser 0 para a condição de recebimento de emails. Por onde começo?
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.