PHP СУММА ПРОПИСЬЮ
Часто при разработке приложений на PHP может возникнуть необходимость выводить числа в текстовом формате, например, сумму прописью. Для этого можно использовать готовую функцию, написанную на PHP.
Пример кода:
function num2str($num) {
$nul='ноль'; $ten=array(
array('','один','два','три','четыре','пять','шесть','семь','восемь','девять'),
array('десять','одиннадцать','двенадцать','тринадцать','четырнадцать','пятнадцать','шестнадцать', 'семнадцать','восемнадцать','девятнадцать'),
array('','десять','двадцать','тридцать','сорок','пятьдесят','шестьдесят', 'семьдесят','восемьдесят','девяносто'),
array('','сто','двести','триста','четыреста','пятьсот','шестьсот','семьсот', 'восемьсот','девятьсот') );
if(!$num) return $nul; $rub = array('','рубль','рубля','рублей');
$kop = array('','копейка','копейки','копеек'); $out = array();
if(is_numeric($num)) {
$num = sprintf("%012.2f", $num);
$num = explode('.',$num);
for($i=0;$i $out[] = substr($num[0], $i, 3);
}
$ok = array(false,false,true,true,true,true,true,true,true,true);
for($i=count($out)-1;$i>=0;$i--) {
$tmp = ''; $cnt = str_pad($out[$i],3,'0',STR_PAD_LEFT);
if($cnt>99) { $tmp .= $ten[3][substr($cnt,0,1)]; $cnt = substr($cnt,1,2); $ok[0] = true; }
if($cnt>9) {
if($cnt<20) { $tmp .= $ten[1][$cnt-10]; $cnt = 0; $ok[1] = true; }
else { $tmp .= $ten[2][substr($cnt,0,1)]; $cnt = substr($cnt,1,1); $ok[2] = true; }
}
if($cnt>0) { $tmp .= $ten[0][$cnt]; $ok[3] = true; }
if($tmp) { $tmp .= ' '.$this->morph($out[$i],$rub); }
if(($i>0)&&($out[$i])) $tmp .= ' '.$this->morph($out[$i],$rub);
$out[$i] = $tmp;
}
$out[count($out)-2] .= ' '.($ok[2] && !$ok[1] ? 'десять ' : '').$this->morph($out[count($out)-2],array('тысяча','тысячи','тысяч'));
$out[count($out)-1] .= ' '.$this->morph($out[count($out)-1],$rub);
if($num[1]>0) {
$cnt = substr(sprintf("%02d",$num[1]),0,2);
$tmp = '';
if($cnt>9) {
if($cnt<20) { $tmp .= $ten[1][$cnt-10]; $cnt = 0; }
else { $tmp .= $ten[2][substr($cnt,0,1)]; $cnt = substr($cnt,1,1); }
}
if($cnt>0) { $tmp .= ' '.$ten[0][$cnt]; }
$out[count($out)-1] .= ' '.$tmp.' '.$this->morph($num[1],$kop);
}
return trim(preg_replace('/ {2,}/', ' ', join(' ',array_reverse($out))));
}
else return false;
}
$num = 1234567.98;
echo num2str($num); // выводится "один миллион двести тридцать четыре тысячи пятьсот шестьдесят семь рублей девяносто восемь копеек"
ПОДРОБНО! PHP Вывод данных из массива на страницу
Числа прописью в Excel быстро и без вспомогательных инструментов!
Число в excel как преобразовать и написать прописью
как ... написать сумму прописью без макросов в Excel
Сума прописом українською Excel
#47 Уроки PHP - Учим язык PHP, Передача параметров методом GET на языке PHP
Excel урок 30. Сумма прописью
#33 Уроки PHP - Учим язык PHP, Обход массива циклом for и foreach на языке PHP
ООП для начинающих PHP. Магические методы get,set,clone