17

我以前从未使用过这些函数,但在阅读了很多关于 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() 函数呢?

4

3 回答 3

58

sprintf()返回一个字符串,printf()显示它。

以下两个是相等的:

printf(currentDateTime());
print sprintf(currentDateTime());
于 2009-06-20T14:40:37.463 回答
14

sprintf()将结果打印到字符串。printf()将其打印到标准输出,即:

printf(currentDateTime());

相当于:

echo sprintf(currentDateTime());
于 2009-06-20T14:40:36.717 回答
6

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

于 2009-06-20T14:44:44.790 回答