0

こんにちは、今日は で について読んでいprintfましたPHPprintfフォーマットされた文字列を出力します。私はひもを持っています。浮動小数点文字列を次のようにフォーマットしようとしていました

 $str = printf('%.1f',5.3);

%.1f私はフォーマット手段について知っています。ここで 1 は小数点以下の桁数です。私echo $strが好きなら

echo $str; 

出力します

5.33

5.3は文字列で、 3 は の戻り値である出力文字列の長さであるため、出力を理解できますprintf

しかし、私の次のコードを見てください

$str = printf('%.1f', '5.34');
echo 'ABC';
echo $str;

出力します

5.3ABC3

私はそれがどのように起こっているのだろうか?単純な PHP 補間を行う場合はABC、最初に出力する必要5.335.33ありABCます。

ここで何が起こっているのかを教えてくれる人はいますか?

4

5 に答える 5

5
Place echo "<br>" after every line.You will understand how it is happening.

$str = printf('%.1f', '5.34');    output is 5.3
echo "<br>";
echo 'ABC';    output is ABC
echo "<br>";
echo $str;    output is 3
于 2013-06-12T08:11:06.660 に答える
1

printfフォーマットされた文字列を出力し、フォーマットされた文字列ではなく、出力された文字列の長さを返します。sprintf代わりに使用する必要があります

$str = sprintf('%.1f',5.3);

の理由5.3ABC3

 5.3  ----------------  printf('%.1f', '5.34'); and $str  becomes 3 
 ABC  ----------------  echo 'ABC';
 3    ----------------  length of 5.3 which is $str
于 2013-06-12T07:54:50.340 に答える
1
$str = printf('%.1f', '5.34'); // outputs '5.3' and sets $str to 3 (the length)
echo 'ABC';                    // outputs 'ABC'
echo $str;                     // outputs the value of $str (i.e. '3')

したがって

'5.3', then 'ABC' then '3'

与える

5.3ABC3
于 2013-06-12T07:56:57.177 に答える
1

あなたは自分で答えを出しました:printfフォーマットされた文字列を出力し、文字列の長さを返します。

そう:

$str = printf('%.1f', '5.34'); // prints 5.3
echo 'ABC';                    // prints ABC
echo $str;                     // prints 3

5.3ABC3

于 2013-06-12T08:03:26.897 に答える