Почему sprintf () ничего не выводит? - PullRequest
17 голосов
/ 20 июня 2009

Раньше я никогда не использовал эти функции, но после прочтения большого количества информации о 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 ()?

Ответы [ 3 ]

57 голосов
/ 20 июня 2009

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

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

printf(currentDateTime());
print sprintf(currentDateTime());
14 голосов
/ 20 июня 2009

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

printf(currentDateTime());

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

echo sprintf(currentDateTime());
6 голосов
/ 20 июня 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...