Why doesn't sprintf() output anything?
Question
I've never used these functions before but after reading a lot about sprintf(), I decided I should get to know it.
So I went ahead and did the following.
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());
It prints nothing. Using the printf() function on the other hand:
printf(currentDateTime());
It prints the result just fine. So what's the difference between these 2 functions and how do I properly use the sprintf() function?
Solution
sprintf()
returns a string, printf()
displays it.
The following two are equal:
printf(currentDateTime());
print sprintf(currentDateTime());
OTHER TIPS
sprintf()
prints the result to a string. printf()
prints it to standard output ie:
printf(currentDateTime());
is equivalent to:
echo sprintf(currentDateTime());
sprintf() returns a string while printf() outputs a string. So you'd have to do something like the following:
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);
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow