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());

それは結果をうまく印刷します。では、これら 2 つの関数の違いと、sprintf() 関数を適切に使用するにはどうすればよいでしょうか?

4

3 に答える 3

58

sprintf()文字列を返し、printf()表示します。

次の 2 つは等しいです。

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 に答える