В качестве параметров функция принимает месяц и число рождения, то есть те параметры, которые необходимы и достаточны для определения знака зодиака. Следующей строкой мы перечисляем все знаки зодиака и записываем их в массив.

В переменную signsstart мы записываем числа, соответствующие последнему дню предыдущего знака. Например, стрельцы заканчиваются 21-го числа (козероги начинаются 22-го числа), поэтому именно число 21 и идёт первым элементом. Козероги заканчиваются 20-го числа, соответственно, число 20 идёт вторым элементом и так далее.

Наконец, последней строкой мы определяем, попадает ли день рождения в следующий знак зодиака соответствующего месяца, если да, то возвращается знак под номером, соответствующим остатку при делении месяца на 12, а если нет, то возвращается предыдущий знак зодиака. Не забываем, что нумерация знаков идёт не с 1, а с 0!

В качестве тестового примера было выбрано 11 июля, а результатом работы данного скрипта была строка: "Рак", что соответствует действительности.

                        
<?php
function getZodiacalSign($month, $day) {
$signs = array("Козерог", "Водолей", "Рыбы", "Овен", "Телец", "Близнецы", "Рак", "Лев", "Девы", "Весы", "Скорпион", "Стрелец");
$signsstart = array(1=>21, 2=>20, 3=>20, 4=>20, 5=>20, 6=>20, 7=>21, 8=>22, 9=>23, 10=>23, 11=>23, 12=>23);
return $day < $signsstart[$month + 1] ? $signs[$month - 1] : $signs[$month % 12];
}
echo getZodiacalSign(7, 11);
?>
0 15 0
Без комментариев...