Наверх
 

Навигация
Опрос
Есть ли на этом сайте что-нибудь полезное для Вас?
Да, конечно есть
Нет
Пока еще не нашел

База уроков » » » Получение суммы прописью через PHP

Получение суммы прописью через PHP

31 мар 2014 | Комментариев: 0 | Просмотров: 2239
Расскажу как получить общую сумму прописью.
 
function num2str($num) {
	    $nul='ноль';
	    $ten=array(
	        array('','один','два','три','четыре','пять','шесть','семь', 'восемь','девять'),
	        array('','одна','две','три','четыре','пять','шесть','семь', 'восемь','девять'),
	    );
	    $a20=array('десять','одиннадцать','двенадцать','тринадцать','четырнадцать' ,'пятнадцать','шестнадцать','семнадцать','восемнадцать','девятнадцать');
	    $tens=array(2=>'двадцать','тридцать','сорок','пятьдесят','шестьдесят','семьдесят' ,'восемьдесят','девяносто');
	    $hundred=array('','сто','двести','триста','четыреста','пятьсот','шестьсот', 'семьсот','восемьсот','девятьсот');
	    $unit=array( // Units
	        array('копейка' ,'копейки' ,'копеек',     1),
	        array('рубль'   ,'рубля'   ,'рублей'    ,0),
	        array('тысяча'  ,'тысячи'  ,'тысяч'     ,1),
	        array('миллион' ,'миллиона','миллионов' ,0),
	        array('миллиард','милиарда','миллиардов',0),
	    );
	    //
	    list($rub,$kop) = explode('.',sprintf("%015.2f", floatval($num)));
	    $out = array();
	    if (intval($rub)>0) {
	        foreach(str_split($rub,3) as $uk=>$v) { // by 3 symbols
	            if (!intval($v)) continue;
	            $uk = sizeof($unit)-$uk-1; // unit key
	            $gender = $unit[$uk][3];
	            list($i1,$i2,$i3) = array_map('intval',str_split($v,1));
	            // mega-logic
	            $out[] = $hundred[$i1]; # 1xx-9xx
	            if ($i2>1) $out[]= $tens[$i2].' '.$ten[$gender][$i3]; # 20-99
	            else $out[]= $i2>0 ? $a20[$i3] : $ten[$gender][$i3]; # 10-19 | 1-9
	            // units without rub & kop
	            if ($uk>1) $out[]= morph($v,$unit[$uk][0],$unit[$uk][1],$unit[$uk][2]);
	        } //foreach
	    }
	    else $out[] = $nul;
	    $out[] = morph(intval($rub), $unit[1][0],$unit[1][1],$unit[1][2]); // rub
	    $out[] = $kop.' '.morph($kop,$unit[0][0],$unit[0][1],$unit[0][2]); // kop
	    return trim(preg_replace('/ {2,}/', ' ', join(' ',$out)));
	}
	
	function morph($n, $f1, $f2, $f5) {
	    $n = abs(intval($n)) % 100;
	    if ($n>10 && $n<20) return $f5;
	    $n = $n % 10;
	    if ($n>1 && $n<5) return $f2;
	    if ($n==1) return $f1;
	    return $f5;
	}
 
и на страницу добавляем куда будем выводить:
num2str(878867.15); // восемьсот семьдесят восемь тысяч восемьсот шестьдесят семь рублей 15 копеек


Ссылка на новость:

    html-cсылка на публикацию
    BB-cсылка на публикацию
    Прямая ссылка на публикацию

ЕЩЕ НА ЭТУ ТЕМУ:

Синтаксис по PHP

Синтаксис по PHP

Расскажу про синтаксис PHP, что это такое и как он работает.
Кэширование в PHP

Кэширование в PHP

Давно интересовался классом кэширования данных в php которые выводятся скриптом. Так зачем же вообще использовать кэширование и что нужно кэшировать?
Вывод в php date() на русском

Вывод в php date() на русском

Сегодня поговорим о том, как вывести значение функции date php на русском. Достаточно актуальная задача, сам с ней столкнулся недавно.
Как узнать ip адрес посетителя в php скрипте?

Как узнать ip адрес посетителя в php скрипте?

Узнаем IP адрес посетителя на сайте.
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.