Skip to content

Instantly share code, notes, and snippets.

@KarelWintersky
Created October 11, 2015 22:32
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save KarelWintersky/a904eda1eb98b722798f to your computer and use it in GitHub Desktop.
Save KarelWintersky/a904eda1eb98b722798f to your computer and use it in GitHub Desktop.
KW: Value converting
<?php
/**
* @param $size
* @return string
*/
function convertToHumanBytes($size)
{
$inflexion = array(" Bytes", " K", " M", " G", " T", " P", " E", " Z", " Y");
return $size ? round($size / pow(1024, ($i = floor(log($size, 1024)))), 0) . $inflexion[$i] : '0'.$inflexion[0];
}
/* Plural forms (russian) */
/**
* Функция возвращает число и окончание для множественного числа слова на основании числа и массива окончаний
* @param $number int число чего-либо
* @param $titles array варианты написания слов для количества 1, 2 и 5 (яблоко, яблока, яблок)
* @return string число и окончание
* see http://habrahabr.ru/post/105428/
*/
function str_human_plural_form($number, $titles = array('', '', ''))
{
$cases = array(2, 0, 1, 1, 1, 2); // a bit of magic!
return $number . " " . $titles[($number % 100 > 4 && $number % 100 < 20) ? 2 : $cases[min($number % 10, 5)]];
}
/**
* Функция возвращает только окончание для множественного числа слова на основании числа и массива окончаний
* @param $number int число чего-либо
* @param $titles array варианты написания слов для количества 1, 2 и 5 (яблоко, яблока, яблок)
* @return string только окончание
*/
function get_human_plural_form($number, $titles = array('', '', ''))
{
$cases = array(2, 0, 1, 1, 1, 2); // a bit of magic!
return $titles[($number % 100 > 4 && $number % 100 < 20) ? 2 : $cases[min($number % 10, 5)]];
}
/* such as human_plural_form, but written by me at 2010 year */
/**
* @param $num
* @param $str1
* @param $str2
* @param $str3
* @return string
*/
function getHumanFriendlyCounter($num, $str1, $str2, $str3)
{
$ret = '';
if ($num == 0) $ret = $str3;
if ($num == 1) $ret = $str1;
if ($num < 21) {
if ($num == 1) $ret = $str1;
if (($num > 1) && ($num < 5)) $ret = $str2;
if (($num > 4) && ($num < 21)) $ret = $str3;
} else {
$residue = ($num % 10);
if ($residue == 1) $ret = $str1;
if (($residue > 1) && ($residue < 5)) $ret = $str2;
if (($residue > 4) && ($residue <= 9)) $ret = $str3;
if ($residue == 0) $ret = $str3;
}
return $ret;
}
/**
* Russian Plural Form (shortest)
* https://gist.github.com/fomigo/2382775
* @param int $n
* @param array $forms - формы
* @return string - правильная строка
*/
function plural_form($n, $forms) {
return $n%10==1&&$n%100!=11?$forms[0]:($n%10>=2&&$n%10<=4&&($n%100<10||$n%100>=20)?$forms[1]:$forms[2]);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment