Pourquoi sprintf () ne génère rien?
Question
Je n’avais jamais utilisé ces fonctions auparavant, mais après avoir beaucoup lu sur sprintf (), j’ai décidé de le connaître.
Alors je suis allé de l'avant et j'ai fait ce qui suit.
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());
Cela n'imprime rien. En utilisant la fonction printf (), en revanche:
printf(currentDateTime());
Cela imprime parfaitement le résultat. Alors, quelle est la différence entre ces 2 fonctions et comment utiliser correctement la fonction sprintf ()?
La solution
sprintf ()
renvoie une chaîne, printf ()
l'affiche.
Les deux suivants sont égaux:
printf(currentDateTime());
print sprintf(currentDateTime());
Autres conseils
sprintf ()
affiche le résultat dans une chaîne. printf ()
l’imprime sur la sortie standard, par exemple:
printf(currentDateTime());
est équivalent à:
echo sprintf(currentDateTime());
sprintf () renvoie une chaîne, tandis que printf () en génère une. Vous devez donc faire quelque chose comme ce qui suit:
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);