Загрузка данных
<?php
$name = trim($_POST['name']);
$age = (int)$_POST['age'];
$weight = (float)$_POST['weight'];
$height = (float)$_POST['height'];
$gender = $_POST['gender'];
$activity = $_POST['activity'];
$products = trim($_POST['products']);
$birth = $_POST['birth'];
echo "<h2>Результаты</h2>";
if ($age < 1 || $age > 120) die("Ошибка возраста");
if ($weight < 30 || $weight > 300) die("Ошибка веса");
if ($height < 100 || $height > 250) die("Ошибка роста");
$bmi = $weight / pow($height / 100, 2);
if ($bmi < 18.5)
$bmiCategory = "Недостаточная масса";
elseif ($bmi < 25)
$bmiCategory = "Норма";
elseif ($bmi < 30)
$bmiCategory = "Избыточная масса";
else
$bmiCategory = "Ожирение";
if ($gender == "male")
$calories = 10 * $weight + 6.25 * $height - 5 * $age + 5;
else
$calories = 10 * $weight + 6.25 * $height - 5 * $age - 161;
if ($activity == "low")
$calories *= 1.2;
elseif ($activity == "medium")
$calories *= 1.55;
else
$calories *= 1.9;
list($day, $month, $year) = explode(".", $birth);
function zodiac($day, $month)
{
if (($month == 3 && $day >= 21) || ($month == 4 && $day <= 19)) return "Овен";
if (($month == 4 && $day >= 20) || ($month == 5 && $day <= 20)) return "Телец";
if (($month == 5 && $day >= 21) || ($month == 6 && $day <= 20)) return "Близнецы";
if (($month == 6 && $day >= 21) || ($month == 7 && $day <= 22)) return "Рак";
if (($month == 7 && $day >= 23) || ($month == 8 && $day <= 22)) return "Лев";
if (($month == 8 && $day >= 23) || ($month == 9 && $day <= 22)) return "Дева";
if (($month == 9 && $day >= 23) || ($month == 10 && $day <= 22)) return "Весы";
if (($month == 10 && $day >= 23) || ($month == 11 && $day <= 21)) return "Скорпион";
if (($month == 11 && $day >= 22) || ($month == 12 && $day <= 21)) return "Стрелец";
if (($month == 12 && $day >= 22) || ($month == 1 && $day <= 19)) return "Козерог";
if (($month == 1 && $day >= 20) || ($month == 2 && $day <= 18)) return "Водолей";
return "Рыбы";
}
$zodiac = zodiac($day, $month);
$horoscopes = [
"Овен" => "Сегодня хороший день.",
"Телец" => "Удача рядом.",
"Близнецы" => "Будет интересное общение.",
"Рак" => "Уделите время семье.",
"Лев" => "Проявите инициативу.",
"Дева" => "Хороший день для учёбы.",
"Весы" => "Сохраняйте баланс.",
"Скорпион" => "Ждите приятный сюрприз.",
"Стрелец" => "Не бойтесь нового.",
"Козерог" => "Труд принесёт результат.",
"Водолей" => "Появятся новые идеи.",
"Рыбы" => "Доверьтесь интуиции."
];
$productArray = array_filter(array_map('trim', explode(',', $products)));
echo "Имя: $name <br>";
echo "Возраст: $age <br>";
echo "Вес: $weight кг<br>";
echo "Рост: $height см<br><br>";
echo "ИМТ: " . round($bmi, 2) . "<br>";
echo "Категория: $bmiCategory <br><br>";
echo "Суточная норма калорий: " . round($calories) . " ккал<br><br>";
echo "Знак зодиака: $zodiac <br>";
echo "Гороскоп: " . $horoscopes[$zodiac] . "<br><br>";
echo "Количество продуктов: " . count($productArray) . "<br>";
echo "Количество символов: " . mb_strlen($products) . "<br><br>";
foreach ($productArray as $product)
{
echo "<h3>$product</h3>";
$length = mb_strlen($product);
echo "<table border='1'>";
echo "<tr><th>Буква</th><th>%</th></tr>";
$letters = [];
for ($i = 0; $i < $length; $i++)
{
$char = mb_substr($product, $i, 1);
if ($char != " ")
{
if (!isset($letters[$char]))
$letters[$char] = 0;
$letters[$char]++;
}
}
foreach ($letters as $letter => $count)
{
$percent = round($count / $length * 100, 2);
echo "<tr>";
echo "<td>$letter</td>";
echo "<td>$percent%</td>";
echo "</tr>";
}
echo "</table>";
echo "<br>Делители количества букв ($length): ";
for ($i = 1; $i <= $length; $i++)
{
if ($length % $i == 0)
echo $i . " ";
}
echo "<hr>";
}
?>