Vamos lá, Rodrigo.
$altura = 1.74;
$peso = 60;
$imc = $peso / ($altura ** 2); // nesse caso, é mais ou menos 19,8
Analisando todos os seus casos, vemos que não tem nenhum caso que cubra esse cenário.
if($imc < 18.5)
19,8 não é menor do que 18,5.
else if($imc >=18.5 and $imc > 24.9)
19,8 não é maior do que 24.9
if($imc >=25 and $imc >29.9)
19,8 não é maior ou igual a 25 nem maior do que 29.0
else if($imc >=30 and $imc > 39.9)
19,8 não é maior ou igual a 30 nem maior do que 39.9.
Seus casos estão errados, entende? A solução proposta foi a seguinte:
if ($imc < 18.5) {
echo "abaixo";
} elseif ($imc < 25) {
echo "dentro";
} else {
echo "acima";
}
Entraria no primeiro elseif
, pois 19,8 é menor do que 25.
Espero que tenha esclarecido. :-)