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

Variável com alcance entre dois valores

Olá, Eu gostaria de saber se existe uma forma de determinar, por exemplo, uma variável com um alcance entre 25 e 30, que seria o valor de imc ideal. tipo:

$imcIdeal = e aqui se escreveria de 25 até 30;

ai quando de partisse para os ifs após o cálculo do imc, seria só chamar a variavel $imcIdeal para a comparação.

if ( $imc > $imcIdeal ) {....}

Seria isso possível?

desde já agradeço!!!

4 respostas

Oi Celso, tudo bom?

Se observar bem a sua ideia não faz muito sentido lógico por que nesse if você quer apenas comparar se a pessoa tem sobrepeso, ou seja, se o peso dela é acima de 30 (ao menos foi isso que eu entendi através do seu código).

Talvez o que você queira é uma função que represente o IMC ideal:

function imcEhIdeal($imc) {
    return $imc >= 25 && $imc <= 30;
}

Qualquer dúvida estou à disposição.

Tudo bem cara! obrigado a resposta. o que diz é verdade. Era só eu ter feito: se for menor que 25 ta abaixo e maior que 30 ta acima. Senão ta ideal. Mas por curiosidade,hehehe, existe como determinar uma variavel com um alcance entre dois valores, sem utilizar uma função??

Muito Obrigado!!

solução!

Oi Celso,

Então... O que seria alcance entre dois valores? Não seria determinar se a variável está dentro de um intervalo? Caso positivo, pode ser muito bem representada por uma função e lembre que funções podem ser armazenadas em variáveis e serem tratadas como dados.

A mesma função que te apresentei na resposta anterior pode ser renomeada e talvez assim fique mais claro a idéia:

function estaEntre25e30($valor) {
    return $valor >= 25 && $valor <= 30;
}

var_dump(estaEntre25e30(31)); //false
var_dump(estaEntre25e30(26)); //true

O que você pode fazer é criar uma solução mais genérica:

$estaNoIntervalo = fn($menorValor) => fn($maiorValor) => fn($valorASerComparado) => $valorASerComparado >= $menorValor && $valorASerComparado <= $maiorValor;

Caso, a primeira vista, não tenha entendido muito bem o código acima foque na lógica do que podemos produzir com ele:

$de25 = $estaNoIntervalo(25);

$de25Ate30 = $de25(30);

$de25Ate40 = $de25(40);


var_dump($de25Ate30(31)); // false
var_dump($de25Ate40(31)); //true

Observe que reaproveitei a mesma função $de25 para produzir uma outra função que compara de 25 até 30 e uma outra que compara de 25 até 40, isso poderia ser feito com qualquer outro número e fazer infinitas combinações.

Mas caso o que você quer dizer com "alcance entre dois valores" seja produzir todos os números entre esse intervalo você vai precisar de um array e basta usar a função nativa do php chamada range.

Caso sua dúvida tenha sido esclarecida não esqueça de marcar a solução para que o tópico seja encerrado.

Qualquer dúvida extra estou à disposição :)

Entendi!! O que eu queria acho que era o Range. Mas pelo que percebo a função que você apresentou primeiro faz mais sentido. Cara muito obrigado a disposição!!! Tenha um bom dia!!