Почему 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());

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

3 ответов


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

следующие два равенства:

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

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

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

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

http://www.php.net/sprintf

http://www.php.net/printf