Php 为什么';输出什么?

Php 为什么';输出什么?,php,printf,Php,Printf,我以前从未使用过这些函数,但在阅读了大量有关sprintf()的内容后,我决定应该了解它 所以我继续做下面的事情 function currentDateTime() { list($micro, $Unixtime) = explode(" ",microtime()); $sec= $micro + date("s", $Unixtime); $sec = mb_ereg_replace(sprintf('%d', $sec), "", ($micro + date("s", $

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

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

printf(currentDateTime());
相当于:

echo sprintf(currentDateTime());
sprintf()
返回一个字符串,
printf()
显示该字符串

以下两者相等:

printf(currentDateTime());
print 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);


我记得它是通过思考'silent
printf()
':)@deed02392,那不是表示“字符串”的
s