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
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
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
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

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:11güzel bir makale mustafa abi
August 20th, 2007 at 21:32Teşekkürler Gürkan
August 20th, 2007 at 21:34Güzel bir derleme olmuş. Ben sprintf fonksiyonunu tercih ediyorum. Bunun için yeniden fonksiyon yazmaya gerek yok kanımca (:
August 21st, 2007 at 11:48Benim 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