Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: echo() a printf()
Forum PHP.pl > Forum > Przedszkole
Ojebejbe
Witam,
Jak wszyscy wiemy są sobie dwie funkcje - echo() i printf(). Obydwie służą do wyświetlania jakichś danych.
Pytanie brzmi. Jakie są między nimi różnice.

Wiem tyle, że do printf() można dodawać różne parametry, a do echo() już nie. Chodzi mi tu głównie o szybkość działania funkcji?

Na swoim www używam printf() nie wykorzystując jego funkcji, tj.:
  1. <?php
  2. printf($tablica[$_POST['mail']]);
  3. ?>


Czy coś się zmieni jeśli użyję tu echo() ?
mokry
echo() wyswietli po prostu string z twojej zmiennej...

za pomoca printf() mozesz sobie formatowac tekst (ilosc liczb po przecinku, konwersja liczb na systemy dwojkowe, osemkowe, hex, itd... odsylam do manuala po wiecej info... http://pl.php.net/manual/ )

Szybkosc dzialania? Jezeli echo tylko wyswietla i nieczego z zmienna nie robi to analogicznie jest szybsze winksmiley.jpg
My4tic
Echo jest nieco szybsze. Poza tym printf zwraca true/false.
ajmlovinint
wykonałem skromne testy:

1) TEST PRINTF

// to są moje zmienne
$zm1 = 'ZMIENNA 1';
$zm2 = 'ZMIENNA 2';
$zm3 = 'ZMIENNA 3';
$zm4 = 'ZMIENNA 4';
$zm5 = 'ZMIENNA 5';
$zm6 = 'ZMIENNA 6';

// tak chcę je wyświetlić
$format = '--a--%s--b--%s--c--%s--d--%s--e--%s--f--%s';

// a tak wykonuję serię działań

for($i=1;$i<=50000;$i++){

printf($format, $zm1, $zm2, $zm3, $zm4, $zm5, $zm6);

}

Wynik z xdebug: printf wykonywano przez ok. 260s
=====================

2) TEST ECHO


// te same zmienne

for($i=1;$i<=50000;$i++){

echo '--a--'.$zm1.'--b--'.$zm2.'--c--'.$zm3.'--d--'.$zm4.'--e--'.$zm5.'--f--'.$zm6;

}

Wynik z xdebug: echo wykonywano przez ok. 180 s.
=====================

Wniosek: echo jest szybsze od printf o ok. 30% !
ajmlovinint
korekta: nie s tylko ms
ps.
sorry - zapomniałem ująć kod w [ php ].
croc
Myślę, że lepiej porównywać echo z print, bo printf ma nieco inne zastosowanie.
blooregard
Podstawowa różnica jest taka, że echo() to konstrukcja językowa, a
printf() to funkcja, zwracająca jako rezultat wykonania długość wyświetlonego ciągu (w bajtach).

Poza tym fakt, że echo() funkcją nie jest, nie pozwala choćby na takie zabawy:
  1. $function = 'printf';
  2. $txt = "Tekst przykładowy";
  3.  
  4. echo $function($txt); // ok, to sie wykona zgodnie z oczekiwaniami


ale:

  1. $function = 'echo';
  2. $txt = "Tekst przykładowy";
  3.  
  4. echo $function($txt); // a tu sie juz wysypie...
  5.  
  6. Fatal error: Call to undefined function echo() in ....
ajmlovinint
Cytat(croc @ 6.11.2011, 17:14:33 ) *
Myślę, że lepiej porównywać echo z print, bo printf ma nieco inne zastosowanie.


W przypadku print mamy:

  1. // zmienne identyczne jak we wcześniejszym przykładzie
  2.  
  3. for($i=1;$i<=50000;$i++){
  4.  
  5. print '--a--'.$zm1.'--b--'.$zm2.'--c--'.$zm3.'--d--'.$zm4.'--e--'.$zm5.'--f--'.$zm6;
  6.  
  7. }
  8.  
  9. // Wynik z xdebug: czas ok. 200 ms
  10.  


Czyli nadal ameryki nie odkryłem. Używać echo i nie szukać dziury w całym... (?)
ajmlovinint
Tu macie coś ciekawego też:
http://www.phpbench.com/
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.