Данная функция возвращает строку из числа
<?php // Функция парсирования триады // $num - целое число от 0 до 999 // $words - массив, в котором элемент с индексом // 0 - написание числа 1 (например - один', 'одна') // 1 - написание числа 2 (аналогично) // 2 - единицы в единственном числе им.падеже(рубль') // 3 - единицы в единственном числе род.падеже('рубля') // 4 - единицы во множественном числе им.падеже('рублей') function ParseTriad($num, $words) { $hundreds = array('', 'сто', 'двести', 'триста', 'четыреста', 'пятьсот', 'шестьсот', 'семьсот', 'восемьсот', 'девятьсот'); $decads = array('двадцать', 'тридцать', 'сорок', 'пятьдесят', 'шестьдесят', 'семьдесят', 'восемьдесят', 'девяносто'); $fdecads = array('десять', 'одиннадцать', 'двенадцать', 'тринадцать', 'четырнадцать', 'пятнадцать', 'шестнадцать', 'семнадцать', 'восемнадцать', 'девятнадцать'); $ones = array('', $words[0], $words[1], 'три', 'четыре', 'пять', 'шесть', 'семь', 'восемь', 'девять'); $result = ''; $h = floor($num / 100); $result .= $hundreds[$h]; $d = floor(($num - $h * 100) / 10); $c = ($num - $h * 100 - $d*10); $result .= ($result != '') ? ' ' : ''; if($d == 1) { $result .= $fdecads[$c]; } else { if($d > 1) $result .= $decads[$d-2] . ' '; $result .= $ones[$c]; } $result .= ($result != '') ? ' ' : ''; switch ($c) { case 1: $result .= ($d != 1) ? $words[2] : $words[4]; break; case 2: case 3: case 4: $result .= ($d != 1) ? $words[3] : $words[4]; break; default: if ($num > 0) { $result .= $words[4]; } } return $result; } ?>
<?php // Функция возвращает число прописью // $num - любое целое число (в данной реализации до 10^12-1) // $upcase - булев параметр, если тру, то строка с заглавной буквы function ParseSum($num, $upcase) { $md = floor($num/1e9); $m = floor(($num - $md*1e9)/1e6); $t = floor(($num - $md*1e9 - $m*1e6)/1e3); $h = floor($num - $md*1e9 - $m*1e6 - $t*1e3); $result = ParseTriad($md, array('один', 'два', 'миллиард', 'миллиарда', 'миллиардов')); $result .= ($result != '') ? ' ' : ''; $result .= ParseTriad($m, array('один', 'два', 'миллион', 'миллиона', 'миллионов')); $result .= ($result != '') ? ' ' : ''; $result .= ParseTriad($t, array('одна', 'две', 'тысяча', 'тысячи', 'тысяч')); $result .= ($result != '') ? ' ' : ''; $result .= ParseTriad($h, array('один', 'два', 'рубль', 'рубля', 'рублей')); $result = $upcase ? ucfirst($result) : $result; return $result; } ?>
Постоянные ссылки
При копировании ссылка на TeaM RSN обязательна!
Оставить комментарий
Вы должны войти, чтобы оставить комментарий.