echo ve print(printf,sprintf) farkı

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′

Samet ATABAŞ

Sakarya Üniversitesi Bilgisayar ve Öğretim Teknolojileri Öğretmenliği Mezunu.PHP Developer

echo ve print(printf,sprintf) farkı” için 2 yorum

Bir Yorum Yazın

This site uses Akismet to reduce spam. Learn how your comment data is processed.