Perché sprintf () non emette nulla?
Domanda
Non ho mai usato queste funzioni prima, ma dopo aver letto molto su sprintf (), ho deciso che avrei dovuto conoscerlo.
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 invece la funzione printf ():
printf(currentDateTime());
Stampa il risultato bene. Quindi qual è la differenza tra queste 2 funzioni e come posso usare correttamente la funzione sprintf ()?
Soluzione
sprintf ()
restituisce una stringa, printf ()
la visualizza.
I seguenti due sono uguali:
printf(currentDateTime());
print sprintf(currentDateTime());
Altri suggerimenti
sprintf ()
stampa il risultato su una stringa. printf ()
lo stampa sull'output standard, ad esempio:
printf(currentDateTime());
è equivalente a:
echo sprintf(currentDateTime());
sprintf () restituisce una stringa mentre printf () restituisce una stringa. Quindi dovresti fare qualcosa del tipo:
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);