Warum gibt Sprintf () nichts aus?
Frage
Ich habe diese Funktionen noch nie zuvor verwendet, aber nachdem ich viel über Sprintf () gelesen habe, entschied ich, dass ich es kennenlernen sollte.
Also ging ich weiter und machte 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. Verwenden Sie die Funktion printf () dagegen:
printf(currentDateTime());
Es druckt das Ergebnis gut. Was ist der Unterschied zwischen diesen beiden Funktionen und wie verwende ich die Sprintf () -Funktion richtig?
Lösung
sprintf()
Gibt eine Zeichenfolge zurück, printf()
Zeigt es an.
Die folgenden beiden sind gleich:
printf(currentDateTime());
print sprintf(currentDateTime());
Andere Tipps
sprintf()
druckt das Ergebnis zu einer Zeichenfolge. printf()
druckt es in Standardausgabe dh:
printf(currentDateTime());
ist äquivalent zu:
echo sprintf(currentDateTime());
Sprintf () gibt eine Zeichenfolge zurück, während printf () eine Zeichenfolge ausgibt. Sie müssten also so etwas wie Folgendes tun:
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);