Склонение слов и правильная запись времени в виде текста
Необходимость правильно склонять слова существует практически на любом сайте, хотя бы для отображения времени. В этой статье я предоставлю две небольшие функции, позволяющие склонять слова, а также функцию преобразующую время в виде unix_timestamp в читабельный формат.
Честно сказать, функция склонения слов была где-то мной взята из просторов интернета, то это было так давно, что я уже не помню откуда и кто автор данной функции.
Склонение слов
функция принимает целых три параметра, хотя третий и не является обязательным. В первом мы передаем само число, во втором параметре массив из трех элементов содержащий три вариации написания склоняемого слова, а в третьем параметре задаем флаг отображения числа. Если параметр стоит true, то будет выводится само число в результате работы функции, иначе выведется просто нужное склонение.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | function declension($int, $expressions, $showint = true) { settype($int, "integer"); $count = $int % 100; if ($count >= 5 && $count <= 20) { $result = ($showint? $int." ":"").$expressions['2']; } else { $count = $count % 10; if ($count == 1) { $result = ($showint? $int." ":"").$expressions['0']; } elseif ($count >= 2 && $count <= 4) { $result = ($showint? $int." ":"").$expressions['1']; } else { $result = ($showint? $int." ":"").$expressions['2']; } } return $result; } |
Для примера рассмотрим такой вызов:
1 | echo 'Ваш заказ на '.price_format($total_price).' '.declension($total_price, array('рубль', 'рубля','рублей'), false).'.'; |
Как видите, все просто, более того, я применил еще и функцию правильного отображения чисел из предыдущей статьи. Они отлично сочетаются вместе.
Вывод времени в текстовом формате
Я всегда храню дату в базе в формате unix_timestamp, т.к. это позволяет производить математические операции со временем, а также сравнивать даты. Но выводить все же стоит более удобным способом чем в виде date('H:i:s',$date); , хотя этот вариант иногда тоже подходит.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | function mk_myTime($tonpage) { if ($tonpage == 0) return ''; $h = $tonpage / 3600; //часы if ($pos = strpos($h, '.')) $h = substr($h,0,$pos); $timenothour = $tonpage - ($h * 3600); $m = $timenothour / 60; //минуты if ($pos = strpos($m, '.')) $m = substr($m,0,$pos); $sec = $timenothour - ($m * 60); //секунды $s = ''; if (intval($h)) $s = declension($h, array("час", "часа", "часов")).' '; if (intval($m)) $s .= declension($m, array("минуту", "минуты", "минут")).' '; return $s .= declension($sec, array("секунду", "секунды", "секунд")).' '; } |
Эта функция принимает один параметр – время в формате unix_timestamp. Она также использует предыдущую функцию declension для склонения часов минут и секунд.
Надеюсь, эти функции кому-нибудь для пригодятся.



Благодарю за предоставленное решение.
Супер! Спасибо!