Kendi wordpress tasarımımı yaparken wordpress fonksiyonlarını inceliyordum, kodlarda birşey farkettim ekran çıktısı yapmak için genelde ” printf ” kullanılıyor.PHP nin temeli C diline dayandığı için C den gelen ” printf ” php nin eski sürümleinden kalan bir kod olarak biliyordum.Peki wordpress gibi kaliteli bir sistem neden bu eski komutu kullanıyor dedmim ve biraz araştırma yaptım anladımki düzenli çıktılar oluşturmak için printf gerkli oluyor.
echo ve printf farklarına bakalım :
Komut adı: echo
Yazım şekli: echo (strint arg1 [,string argn…])
Döndürdüğü değer: yok
Komut adı: print
Yazım şekli: print (string arg)
Döndürdüğü değer: 1 (Her zaman)
1. Print bir fonksiyon gibi çalışarak geriye işlemin başarı durumunu boolean veritipinde bir değer olarak döndürür. Bu yönüyle print altyapısı echo’ya göre biraz daha karışıktır ve bu da icra süresine olumsuz etki eder.
2. Echo bir fonksiyon gibi çalışmaz ve geriye bir değer döndürmez. Bu özelliği ile Print’e göre bir miktar daha hızlıdır.
3. Echo komutu ile virgülle ayrılmış birden fazla ifadeyi yazdırmak “.” katar birleştirme işleci ile birleştirerek yazdırmaktan daha hızlıdır. Print virgülle ayırarak yazmayı desteklemez.
Örnek:
echo $Merhaba, $php;
ifadesi
echo $Merhaba.$php;
ifadesine göre daha çabuk icra görür.
” printf ” bizimlendirme özelleğine bakalım :
$s = 'monkey'; $t = 'many monkeys'; printf("[%s]", $s); // standart dizge printf("[%10s]", $s); // boşluklarla sağa hizalanır printf("[%-10s]", $s); // boşluklarla sola hizalanır printf("[%010s]", $s); // 0'larla doldurma dizgelerde de çalışır printf("[%'#10s]", $s); // '#' özel dolgu karakteri olarak kullanılır printf("[%10.10s]", $t); // 10 karakterlik sınırlamayla sola hizalama
Bu kodun çıktısı
[monkey] [ monkey] [monkey ] [0000monkey] [####monkey] [many monke]
Yani mesela 0000001 dan 0999999 saydıracaksın ama sıfırlar kalsın istiyorsunuz bunun için :
$i = 0; while($i < 999999){ printf("[%010s]", $i) $i++ }
Çıktı :
0000001
0000002
0000003
0000004
…
0999991
0999992
0999993
0999994
0999995
0999996
…
olacaktır
Çeşitli “printf” örnekleri ;
<?php $n = 43951789; $u = -43951789; $c = 65; // ASCII 65 is 'A'// Dikkat: %%, sadece bir tane '%' basar printf("%%b = '%b '<br>",$n);// ikil gösterim printf("%%c = '%c '<br>",$c);// ascii karakteri basar; chr() ile aynı printf("%%d = '%d '<br>",$n);// standart tamsayı gösterimi printf("%%e = '%e '<br>",$n);// bilimsel gösterim printf("%%u = '%u '<br>",$n);// pozitif tamsayının işaretsiz tamsayı gösterimi printf("%%u = '%u '<br>",$u);// negatif tamsayının işaretsiz tamsayı gösterimi printf("%%f = '%f '<br>",$n);// gerçek sayı gösterimi printf("%%o = '%o '<br>",$n);// sekizlik gösterim printf("%%s = '%s '<br>",$n);// dizge gösterimi printf("%%x = '%x '<br>",$n);// küçük harfli onaltılık sayı gösterimi printf("%%X = '%X '<br>",$n);// büyük harfli onaltılık sayı gösterimi printf("%%+d = '%+d '<br>",$n);// pozitif tamsayı üzerinde işaret belirteci printf("%%+d = '%+d '<br>",$u);// negatif tamsayı üzerinde işaret belirteci ?>
Ekran çıktısı ;
%b = ’10100111101010011010101101′
%c = ‘A’
%d = ’43951789′
%e = ’4.39518e+7′
%u = ’43951789′
%u = ’4251015507′
%f = ’43951789.000000′
%o = ’247523255′
%s = ’43951789′
%x = ’29ea6ad’
%X = ’29EA6AD’
%+d = ‘+43951789′
%+d = ‘-43951789′
Başlık ile alakasız bir konu sprintf farkı demişsin hit kasmak için mi kardeşim ? sprintf kelimesi geçmiyor bile
http://php.net/manual/tr/function.sprintf.php PHP kendi dokümantasyonunda bile sprintf örneklerinde sprintf kullanmamış 🙂