2009-06-20 12 views
17

Ich habe diese Funktionen nie zuvor benutzt, aber nachdem ich viel über sprintf() gelesen hatte, beschloss ich, dass ich es kennen lernen sollte.Warum gibt sprintf() nichts aus?

Also ging ich weiter und tat folgendes.

function currentDateTime() { 
    list($micro, $Unixtime) = explode(" ",microtime()); 
    $sec= $micro + date("s", $Unixtime); 
    $sec = mb_ereg_replace(sprintf('%d', $sec), "", ($micro + date("s", $Unixtime))); 
    return date("Y-m-d H:i:s", $Unixtime).$sec; 
} 

sprintf(currentDateTime()); 

Es druckt nichts. Mit der Funktion printf() auf der anderen Seite:

printf(currentDateTime()); 

Es druckt das Ergebnis gut. Was ist der Unterschied zwischen diesen beiden Funktionen und wie verwende ich die Funktion sprintf() richtig?

Antwort

57

sprintf() gibt eine Zeichenfolge, printf() zeigt ihn.

Die folgenden beiden gleich sind:

printf(currentDateTime()); 
print sprintf(currentDateTime()); 
+24

Ich erinnere mich von '** still ** 'printf()'' denken :) – deed02392

+0

@ deed02392 , Ist das nicht "String"? – Pacerier

14

sprintf() druckt das Ergebnis auf eine Zeichenfolge. printf() druckt sie auf die Standardausgabe das heißt:

printf(currentDateTime()); 

entspricht:

echo sprintf(currentDateTime()); 
6

sprintf() einen String zurückgibt, während printf() eine Zeichenkette ausgibt. Also würden Sie so etwas wie die folgenden zu tun haben:

function currentDateTime() { 
    list($micro, $Unixtime) = explode(" ",microtime()); 
    $sec= $micro + date("s", $Unixtime); 
    $sec = mb_ereg_replace(sprintf('%d', $sec), "", ($micro + date("s", $Unixtime))); 
    return date("Y-m-d H:i:s", $Unixtime).$sec; 
} 

$output = sprintf(currentDateTime()); 
printf($output); 

http://www.php.net/sprintf

http://www.php.net/printf