PHP’de Sıfır Doldurma (ZeroFill)

Bazı zamanlar normal sayılarla yaptığımız sıralamanın dışına çıkmamız gerekebilir. 1'den 99999'a doğru yapılmış bir sıralama yerine 00001'den 99999'a doğru yapılmış bir sıralama daha şık görünebileceği gibi kimi yerlerde böyle numaralama zorunlu olabilecektir. Kimlik numarası atamak istediğinizde, eşit basamakta rakamlar oluşturmak kontrol açısından size avantaj sunabilir. Şimdi uygulamalarınızda yer yer karşınıza çıkabilecek bu uygulamayı nasıl gerçekleştirebileceğimize bakalım...

Problem

1'den 9999'a olan rakamların, sıfırla doldurulmuş dört basamaklı hallerinin alt alta listelenmesi

Çözümler

- str_pad() fonksiyonuyla üretilmiş çözüm

PHP:
  1. <?php
  2. for($i=1;$i<=9999;$i++)
  3. echo str_pad($i,4,'0',STR_PAD_LEFT).'<br />';
  4. ?>

str_pad()'in görevi belirlenmiş uzunlukta bir karakter topluluğu oluşturmaktır. Girilen ilk parametre, işlem uygulanacak değer; ikinci parametre, karakter topluluğunun kesin uzunluğu; üçüncü parametre, eksik olan karakter sayısı kadar yerleştirilecek karakter (bizim örneğimizde "0"); dördüncü parametre ise bu karakterin nereye yerleştirileceğidir. Bizim örneğimizde, sol yana sıfır doldurmamız gerekiyor. Bundan dolayı "STR_PAD_LEFT" değeri kullanılmış.

- printf() fonksiyonuyla üretilmiş çözüm

PHP:
  1. <?php
  2. for($i=1;$i<=9999;$i++)
  3. {
  4. printf("%04d",$i);
  5. echo '<br />';
  6. }
  7. ?>

printf()'in görevi girilen değeri belirlenmiş olan formatta ekrana yazdırmaktır. "%04d" formatı, bize 4 karakter uzunluktan küçük olanların "0" doldurulmuş olarak gösterileceğini belirtiyor.

- sprintf() fonksiyonuyla üretilmiş çözüm

PHP:
  1. <?php
  2. for($i=1;$i<=9999;$i++)
  3. echo sprintf("%04d",$i).'<br />';
  4. ?>

sprintf(), printf() fonksiyonuna çok benzer. Aynı format tipiyle çalışır. printf()'ten farkı, oluşturduğu değeri ekrana yazmaz, döndürür. Bu yüzden döndürülen değeri yazdırmak için "echo" fonksiyonundan faydalandık.

Kaynaklar

How to Zero Fill a number?
Manual - str_pad()
Manual - printf()
Manual - sprintf()
Manual (Yorumlar) - number_format()

Continue reading » · Written on: 08-20-07 · 5 Comments »

5 Responses to “PHP’de Sıfır Doldurma (ZeroFill)”

  1. shapcy wrote:

    Eğer başka fonksiyonlarla çözümleriniz varsa, yorum olarak iliştirin. Kontrol edip, yazıya sizin çözümlerinizi de koyalım.

    Aslında bu sıfır doldurma işini kendi yazacağınız fonksiyonlarla da gerçekleştirebilirsiniz ama bu kadar kısa çözümler mevcutken bunu yapmak ne kadar doğrudur, tartışılır…

    August 20th, 2007 at 21:11
  2. grkn wrote:

    güzel bir makale mustafa abi ;)

    August 20th, 2007 at 21:32
  3. shapcy wrote:

    Teşekkürler Gürkan ;)

    August 20th, 2007 at 21:34
  4. eburhan wrote:

    Güzel bir derleme olmuş. Ben sprintf fonksiyonunu tercih ediyorum. Bunun için yeniden fonksiyon yazmaya gerek yok kanımca (:

    August 21st, 2007 at 11:48
  5. shapcy wrote:

    Benim de daha çok str_pad() hoşuma gidiyor.

    Ayrıcı şunu tekrar belirtmekte yarar var. Bu tip durumlarda dizi oluşturmak, üretilecek değeri işlemlere sokmak gerekebilir. Bu yüzden str_pad() ve sprintf() kullanılması gerekir çünkü bunlar değeri döndürürler, printf() ise değeri döndürmez, ekrana basar. Bu da üretilecek değer üzerinde işlem yapmanıza izin vermez.

    August 21st, 2007 at 15:07

Leave a Reply