Данная функция возвращает строку из числа

<?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 обязательна!

URI

Html (ЖЖ)

BB-код (Для форумов)

Оставить комментарий

Вы должны войти, чтобы оставить комментарий.