Загрузка данных


<?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>";
}
?>