1
resposta

Fiz o desafio utilizando o SWITCH

<?php

$peso = 60;  //quilos
$altura = 1.57;  //metros
$imc = $peso / ($altura ** 2);
$imc = number_format($imc, 2, '.', '');

switch ($imc) {
    case ($imc < 18.5): echo "IMC = $imc - Abaixo do peso"; break;
    case ($imc < 24.9): echo "IMC = $imc - Peso normal"; break;
    case ($imc < 29.9): echo "IMC = $imc - Sobrepeso"; break;
    case ($imc < 34.9): echo "IMC = $imc - Obesidade grau I"; break;
    case ($imc < 39.9): echo "IMC = $imc - Obesidade grau II"; break;
    case ($imc <= 40): echo "IMC = $imc - Obesidade grau III ou mórbida"; break;
}
1 resposta

Rayane, esse código até funciona, mas não está escrito da forma mais clara. O que está acontecendo na verdade é comparar a string formatada que está em $imc com um valor booleano (true ou false). Toda string não vazia em PHP é comparável com true, então por isso o código está funcionando.

Você pode inclusive trocar de switch ($imc) { para switch (true) { que o código continua funcionando e nesse caso fazendo um pouco mais de sentido.

Como você já está praticando o switch, fica aqui a dica de uma nova estrutura do PHP 8: https://youtu.be/iQ0ARa9df7E