Почему sprintf () ничего не выводит?

Я никогда не использовал эти функции раньше, но после многого прочитал про sprintf (), я решил, что должен это узнать.

Поэтому я пошел вперед и сделал следующее.

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("Ymd H:i:s", $Unixtime).$sec; } sprintf(currentDateTime()); 

Он ничего не печатает. С другой стороны, с помощью функции printf ():

 printf(currentDateTime()); 

Он печатает результат просто отлично. Итак, какова разница между этими двумя функциями и как правильно использовать функцию sprintf ()?

Solutions Collecting From Web of "Почему sprintf () ничего не выводит?"

sprintf() возвращает строку, printf() отображает ее.

Следующие два равны:

 printf(currentDateTime()); print sprintf(currentDateTime()); 

sprintf() выводит результат на строку. printf() выводит его на стандартный вывод, т.е.:

 printf(currentDateTime()); 

эквивалентно:

 echo sprintf(currentDateTime()); 

sprintf () возвращает строку, в то время как printf () выводит строку. Поэтому вам нужно будет сделать что-то вроде следующего:

 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("Ymd H:i:s", $Unixtime).$sec; } $output = sprintf(currentDateTime()); printf($output); 

http://www.php.net/sprintf

http://www.php.net/printf