Подтвердить что ты не робот

Почему 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("Y-m-d H:i:s", $Unixtime).$sec;
}

sprintf(currentDateTime());

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

printf(currentDateTime());

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

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

printf(currentDateTime());

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

echo sprintf(currentDateTime());

Ответ 3

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("Y-m-d H:i:s", $Unixtime).$sec;
}

$output = sprintf(currentDateTime());
printf($output);

http://www.php.net/sprintf

http://www.php.net/printf