Yazıyla sayı fonksiyonunu kullanım amacı parametre olarak vereceğimiz integer veya string tipindeki sadece sayıyı metin olarak çıktılar. Kod php dilinde yazılmıştır.
Örnek:
Girdi : '1111' veya 1111
Çıktı : 'BinYüzOnBir'
Kullanım:
veya
Örnek:
Girdi : '1111' veya 1111
Çıktı : 'BinYüzOnBir'
function yaziylasayi($sayi) {
$o = array(
'birlik' => array('Bir', 'İki', 'Üç', 'Dört', 'Beş', 'Altı', 'Yedi', 'Sekiz', 'Dokuz'),
'onluk' => array('On', 'Yirmi', 'Otuz', 'Kırk', 'Elli', 'Altmış', 'Yetmiş', 'Seksen', 'Doksan'),
'basamak' => array('Yüz', 'Bin', 'Milyon', 'Milyar', 'Trilyon', 'Katrilyon')
);
// Sayıyı üçer üçer basamaklarına ayırıyoruz
$basamak = array_reverse(str_split(implode('', array_reverse(str_split($sayi))), 3));
// Ayrılmış basamak sayısını buluyoruz
$basamak_sayisi = count($basamak);
// Her basamak için:
for($i=0; $i < $basamak_sayisi; ++$i) {
// Sayıyı basamaklarına ayırdığımızda basamaklar tersine döndüğü için burada ufak bir işlem ile basamakları düzeltiyoruz
$basamak[$i] = implode(array_reverse(str_split($basamak[$i])));
// Eğer basamak 4, 8, 15, 16, 23, 42 gibi 1 veya 2 rakamlıysa başına 3 rakama tamamlayacak şekilde "0" ekliyoruz ki foreach döngüsünde problem olmasın
if(strlen($basamak[$i]) == 1)
$basamak[$i] = '00' . $basamak[$i];
elseif(strlen($basamak[$i]) == 2)
$basamak[$i] = '0' . $basamak[$i];
}
$yenisayi = array();
// Her basamak için: ($yenisayi değişkenine)
foreach($basamak as $b) {
// basamağın ilk rakamı 0'dan büyük ise
if($b[0] > 0)
// değişkene rakamın harfle yazılışı ve "yüz" ekliyoruz
$yenisayi[] = ($b[0] > 1 ? $o['birlik'][$b[0]-1] . '' : '') . $o['basamak'][0];
// basamağın 2. rakamı 0'dan büyük ise
if($b[1] > 0)
// değişkene rakamın harfle yazılışını ekliyoruz
$yenisayi[] = $o['onluk'][$b[1]-1];
// basamağın 3. rakamı 0'dan büyük ise
// ve basamak sayısı 2'e eşitse ve birinci basamak O'a ikinci basamak 0'a üçüncü basamakta 1 eşitse
// ikinci durum "Bir Bin" ifadesi "Bin" şeklinde yazılmasını sağlar
if($b[2] > 0 && !($basamak_sayisi == 2 && $b[0] == 0 && $b[1] == 0 && $b[2] == 1))
// değişkene rakamın harfle yazılışını ekliyoruz
$yenisayi[] = $o['birlik'][$b[2]-1];
// değişkene basamağın ismini (bin, milyon, milyar) ekliyoruz
if($basamak_sayisi > 1)
$yenisayi[] = $o['basamak'][$basamak_sayisi-1];
// Basamak sayısını azaltıyoruz ki her basamağın sonuna ilkinde ne yazıyorsa o yazılmasın
--$basamak_sayisi;
}
return implode('', $yenisayi);
}
Kullanım:
echo yaziylasayi(1111);
veya
echo yaziylasayi('1111');
Yorumlar
Yorum Gönder