对printf的输出感到好奇

Awa*_*rni 0 php string printf

你好今天我读到有关printfPHP.printf超出格式化的字符串.我有一个字符串.我正要格式化浮点字符串

 $str = printf('%.1f',5.3);
Run Code Online (Sandbox Code Playgroud)

我知道格式的%.1f意思.这里1是小数位数.如果我echo $str喜欢

echo $str; 
Run Code Online (Sandbox Code Playgroud)

它输出

5.33
Run Code Online (Sandbox Code Playgroud)

我可以理解输出因为5.3是字符串而3是outputed字符串的长度,它是返回值printf.

但请参阅我的以下代码

$str = printf('%.1f', '5.34');
echo 'ABC';
echo $str;
Run Code Online (Sandbox Code Playgroud)

它输出

5.3ABC3
Run Code Online (Sandbox Code Playgroud)

我想知道它是怎么回事?如果我们简单的PHP插值它应该输出ABC第一,那么它应该输出5.33,因为我们只是格式化5.33没有ABC.

任何人都可以指导我这里发生了什么吗?

ABo*_*rty 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
Run Code Online (Sandbox Code Playgroud)