Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
$pontos=420;
if ($pontos<500) $nivel=1;
if (($pontos>=600) or ($pontos<1000)) $nivel=2;
if (($pontos>=1000) or ($pontos<1500)) $nivel=3;
if (($pontos>=1500) or ($pontos<2000)) $nivel=4;
if (($pontos>=2000) or ($pontos<5000)) $nivel=5;
if ($pontos>=10000) $nivel=6;
Quero atribuir o nivel de acordo com pontos conforme acima, o resultado
Echo $nivel ta exibindo 6! e seria 1
Amigo, sua lógica está muito próxima do correto, mas alguns pontos:
1 - O resultado do seu script nunca daria 6, como mencionado, mas na verdade 5. Percebe-se facilmente esse detalhe, uma vez que você atribui o valor de 420 à variável e o último if não é verdadeiro.
2 - Você está comparando um valor que deve estar entre X E Y. Note que eu negritei o termo "e" propositalmente, pois no português bem claro significa que você quer, por exemplo: "420 está entre 500 E 1000?" Eu não usei "ou" nessa pergunta, entende? Então troque seu OR por AND (ou &&) e estará resolvido.
3 - Utilizar o elseif, como mencionado pelo gabriel é interessante, pelo fato de que uma vez que o if for verdadeiro, ele irá parar de executar e isso melhora a performance do seu script.
4 - Eu ainda faria uma função, veja o exemplo:
<?php
function estaEntre( $x, $min, $max ) {
return $x >= $min && $x <= $max;
}
echo estaEntre( 5, 1, 10 ) ? 'sim' : 'nao';//retorno: sim
echo estaEntre( 15, 1, 10 ) ? 'sim' : 'nao';//retorno: nao
>
Amigo, sua lógica está muito próxima do correto, mas alguns pontos:
1 - O resultado do seu script nunca daria 6, como mencionado, mas na verdade 5. Percebe-se facilmente esse detalhe, uma vez que você atribui o valor de 420 à variável e o último if não é verdadeiro.
2 - Você está comparando um valor que deve estar entre X E Y. Note que eu negritei o termo "e" propositalmente, pois no português bem claro significa que você quer, por exemplo: "420 está entre 500 E 1000?" Eu não usei "ou" nessa pergunta, entende? Então troque seu OR por AND (ou &&) e estará resolvido.
3 - Utilizar o elseif, como mencionado pelo gabriel é interessante, pelo fato de que uma vez que o if for verdadeiro, ele irá parar de executar e isso melhora a performance do seu script.
4 - Eu ainda faria uma função, veja o exemplo:
<?php
function estaEntre( $x, $min, $max ) {
return $x >= $min && $x <= $max;
}
echo estaEntre( 5, 1, 10 ) ? 'sim' : 'nao';//retorno: sim
echo estaEntre( 15, 1, 10 ) ? 'sim' : 'nao';//retorno: nao
Sua resposta ficou muito boa Matheus Tavares, usou até operador ternário para poder verificar a função.
Sua lógica está muito mal feita.
1 - Quando se quer comparar vários valores de uma só variável, use if ... else if.
2 - Quando esse valor pode ter um intervalo, use dupla linha vertical { || } e não OR
seu código ficaria assm