printf は出力に使用され、 sprintf は保存に使用されることを知っています。
しかし、このコードでは:
$str = printf('%.1f', 1.3);
echo $str;
1.33 が出力されるのはなぜですか? 1.31.3を出力すると思いますか?
PHPのprintf関数は、実際には2つのことを行います。引数を出力し(フォーマット文字列に従って、最初の文字列として送信されます)、この出力された文字列の長さを返します。
通常、によって返される値はprintf
使用されませんが、この場合は使用されません。ここで(形式によって)printf
「1.3」文字列(小数点以下1桁のみ)を出力する必要があるため、その長さは3です。したがって、$str
変数に格納され、次のステートメント(with echo
)で出力されます。したがって、全体の出力は「1.33」です。
補足として、これは...
$str = print(1.3);
echo $str;
...「1.31」を出力します。printも2つのことを行うため、引数を出力して1を返します。