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.33,因为我们只是在格式化5.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 回答
3

printf就像一个显命令。它自己显示输出并返回它显示的字符串的长度。

如果要将输出转换为变量,则需要添加

$str=sprintf('%.1f',5.3);
echo 'ABC';
echo $str; 
// now the output will be "ABC5.3

谢谢

于 2013-06-12T08:34:07.070 回答
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 回答