为什么换行符不适用于PHP中的printf()

时间:2014-09-11 12:23:36

标签: php

忽略这个问题。提出错误:

以下两个printf语句之间的区别是什么:

printf($variable, "\n");

printf("Hello\n");

在第一个printf()语句中忽略换行符。但它与第二个声明一起工作正常。

我可以使用新行的唯一方法是将第一个语句拆分为两个单独的语句:

printf($variable);
printf("\n");

这听起来像是来自绝对新手的查询但是我觉得新行在Java中得到了很好的支持,但在PHP中却没有。

4 个答案:

答案 0 :(得分:4)

Java!= PHP

正如official docs

所写
  

有两个字符串运算符。第一个是连接   operator('.'),返回其左右的连接   参数。

PHP中的正确语法是:

printf($variable . "\n");

答案 1 :(得分:3)

从\ r \ n而不是\ n

执行此操作 像这样

<?php
print("myname is \r\n sumit");
?>`

输出看起来像......

我的名字是 SUMIT

答案 2 :(得分:3)

\n被忽略,因为如documentation中所述,第一个参数是format应该打印,其余参数是此格式可以使用的值,例如:

$num = 2.12; 
printf("formatted value = %.1f", $num);
//      ^^^^^^^^^^^^^^^^^^^^^^   ^^^^
//             |                  |
//             format             |
// value which can be put in format in place of `%X` where `X` represents type

将打印formatted value = 2.1因为格式为%.1f,您决定在浮点数后的点后打印一个数字。

要使格式使用字符串参数,您需要使用%s占位符,例如print("hello %s world","beautiful")beautiful代替%s并打印hello beautiful world }。

现在回到你的代码。在printf($variable, "\n"); $variable表示格式,并且很可能在其中没有any %s字符串,这样可以让您以此格式使用"\n"参数。这意味着"\n"将被忽略(未在格式中使用),因此不会打印。

像这样的代码

printf("Hello\n");

printf($variable);
printf("\n");

没有此问题,因为它明确使用\n格式应该打印。

所以看起来你可能想要使用

printf("%s\n", $value) 

这似乎有点矫枉过正,因为您可以使用.运算符简单地连接字符串并将其打印出来,如

print($value."\n")

echo $value."\n";

答案 3 :(得分:2)

您错误地使用了printf()。您需要使用%s来表示换行符的放置位置:

printf($variable . "%s", "\n");