2009-06-20 11 views
17

Non ho mai usato queste funzioni prima ma dopo aver letto molto su sprintf(), ho deciso che dovevo conoscerlo.Perché sprintf() non produce nulla?

Quindi sono andato avanti e ho fatto quanto segue.

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()); 

Non stampa nulla. Utilizzando la funzione printf() d'altra parte:

printf(currentDateTime()); 

Stampa il risultato bene. Quindi qual è la differenza tra queste 2 funzioni e come faccio a utilizzare correttamente la funzione sprintf()?

risposta

57

sprintf() restituisce una stringa, printf() visualizza.

Le seguenti due sono uguali:

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

lo ricordo pensando '** ** silenziosa 'printf()'' :) – deed02392

+0

@ deed02392 , Non è 's' che rappresenta" stringa "? – Pacerier

14

sprintf() stampa il risultato in una stringa. printf() lo stampa cioè standard output:

printf(currentDateTime()); 

è equivalente a:

echo sprintf(currentDateTime()); 
6

sprintf() restituisce una stringa mentre printf() genera una stringa. Quindi dovreste fare qualcosa di simile alla seguente:

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