您好今天我正在阅读printf
中的PHP
。 printf
超出格式化字符串。我有一个字符串。我打算像
$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
。
任何人都可以指导我这里发生了什么吗?
答案 0 :(得分: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
答案 1 :(得分:3)
printf 就像一个 echo 命令。它自己显示输出,并返回显示的字符串长度。
如果您想将输出变为变量,则需要添加
$str=sprintf('%.1f',5.3);
echo 'ABC';
echo $str;
// now the output will be "ABC5.3
由于
答案 2 :(得分: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
答案 3 :(得分: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
答案 4 :(得分:1)
您自己给出了答案:printf
输出格式化字符串并返回字符串的长度。
所以:
$str = printf('%.1f', '5.34'); // prints 5.3
echo 'ABC'; // prints ABC
echo $str; // prints 3
总共是:5.3ABC3