Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 对printf的输出感到好奇_Php_String_Printf - Fatal编程技术网

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