Php 对printf的输出感到好奇
您好,今天我在Php 对printf的输出感到好奇,php,string,printf,Php,String,Printf,您好,今天我在PHP中阅读了关于printf的内容printf输出格式化字符串。我有一根绳子。我正要将浮点字符串格式化为 $str = printf('%.1f',5.3); 我知道格式%.1f的意思。这里1是小数位数。如果我echo$strlike echo $str; 它输出 5.33 我可以理解输出,因为5.3是字符串,3是输出字符串的长度,它是printf的返回值 但是看到我下面的代码了吗 $str = printf('%.1f', '5.34'); echo 'ABC'; e
PHP
中阅读了关于printf
的内容printf
输出格式化字符串。我有一根绳子。我正要将浮点字符串格式化为
$str = printf('%.1f',5.3);
我知道格式%.1f
的意思。这里1是小数位数。如果我echo$str
like
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
有人能告诉我这里发生了什么吗?
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
因此
给予
5.3ABC3
您自己给出了答案:
printf
输出格式化字符串并返回字符串的长度
所以:$str = printf('%.1f', '5.34'); // prints 5.3
echo 'ABC'; // prints ABC
echo $str; // prints 3
总共是:5.3ABC3在每行后面放置echo“
。您将了解它是如何发生的。
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
$str=printf('%.1f','5.34');产量为5.3%
回声“
”;
回声“ABC”;输出为ABC
回声“
”;
echo$str;产量为3
printf类似于一个echo命令。它自己显示输出,并返回显示的字符串长度
如果要将输出放入变量中,则需要添加
$str=sprintf('%.1f',5.3);
echo 'ABC';
echo $str;
// now the output will be "ABC5.3
谢谢我想问一下上述输出的原因亲爱的?
3
是从printf
返回的长度,但是为什么5.3
先是ABC
然后是3
?我知道该机制,但根据代码,它应该是ABC5.33
?因为printf()
生成输出(在您的情况下,值“5.3”)以及设置变量值。。。它能有效地产生回声。。。“输出格式化字符串”。。。。您正在执行printf()作为第一行,因此它是发送到的第一个输出php://output
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
$str=sprintf('%.1f',5.3);
echo 'ABC';
echo $str;
// now the output will be "ABC5.3