Napisałem poniższą funkcję do podawania kwoty słownie podczas drukowania przelewów. Działa ona w zakresie 1-999999 (to i tak już o wiele za dużo jak na moje potrzeby), ale bez problemu można ja przerobić tak żeby działała na większych liczbach ( bądź ujemnych

<? $jedn=array(1=>\"jeden\",\"dwa\",\"trzy\",\"cztery\",\"pięć\",\"sześć\",\"siedem\",\"osiem\",\"dziewięć\",\"dziesięć\",\"jedenaście\",\"dwanaście\", \"trzynaście\",\"czternaście\",\"piętnaście\",\"szesnaście\",\"siedemnaście\",\"osiemnaście\",\"dziewiętnaście\"); $dzies=array(2=>\"dwadzieścia\",\"trzydzieści\",\"czterdzieści\",\"pięćdziesiąt\",\"sześćdziesiąt\",\"siedemdziesiąt\",\"osiemdziesiąt\",\"dziewięćdziesiąt\"); $setki=array(1=>\"sto\",\"dwieście\",\"trzysta\",\"czterysta\",\"pięćset\",\"sześćset\",\"siedemset\",\"osiemset\",\"dziewięćset\"); function kwota_slownie($kwota) { // usuniecie zbednych zer z poczatku ciagu (zeby np. \"009\" bylo zamieniane na \"dziewiec\") while ($kwota[0]==\"0\") { $kwota=substr($kwota,1,strlen($kwota)); } if ($kwota<20) { $slownie=$jedn[$kwota]; } elseif ($kwota<100) { $j=$kwota[1]; $d=$kwota[0]; $slownie=$dzies[$d].\" \".$jedn[$j]; } elseif ($kwota<1000) { $s=$kwota[0]; $slownie=$setki[$s].\" \".kwota_slownie($d); } elseif ($kwota<1000000) { if ($kwota<2000) { $t=\"tysiąc\"; } elseif ($kwota<5000) { $jt=$kwota[0]; $t=$jedn[$jt].\" tysiące\"; } else { $t=kwota_slownie($jt).\" tysięcy\"; } $slownie=$t.\" \".kwota_slownie($d); } // to juz ponad milion - mozna zrobic tak samo jak dla tysiecy // mi nie było to już potrzebne :) else { $slownie=$kwota; } return($slownie); } ?>
EDIT :
Użycie :
<? // $suma - zmienna integer // $zlotych_slownie - string $zlotych_slownie=kwota_slownie($suma); ?>