出于某种原因,我已使用printf($var)
而不是使用echo $var
。我真的不知道为什么。
但是,如果我从变量中输出字符串似乎有问题 - 如果我将printf($var)
更改为echo $var
- 90%的时间它会解决问题。
我不止一次遇到过不同的错误,从参数太少到回显空/空字符串。
有人可以解释为什么printf()
似乎比echo
效率低的原因?
答案 0 :(得分:6)
简短回答,除非您特别需要,否则不要使用printf($var)
。
原因是$var
作为第一个参数传递被视为格式字符串,%s
和%d
之类的内容有<强>特殊含义。在C / C ++中,这可能会导致分段错误,而在PHP中,您可以在手腕上获得一记耳光。
相当于echo
或print
为printf('%s', $var)
;它将$var
转换为字符串然后输出。
顺便说一下,printf()
是一个函数,而echo
和print
是语言结构;因此,使用echo
可能会获得更好的效果。
答案 1 :(得分:3)
printf - 输出格式化的字符串,print返回一个值。它总是返回1.以及echo做什么 - 输出一个或多个字符串
始终返回1似乎没用。并且可以使用字符串连接或多个调用来模拟以逗号分隔的参数列表
通过返回一个值,打印功能比echo功能稍微动态一点,而echo功能稍微(非常轻微)更快。 printf
函数可以使用特殊分隔符(例如%s
或%d
)将动态变量/任意内容插入到任何位置。例如,printf('There is a difference between %s and %s', 'good', 'evil')
将返回'There is a difference between good and evil'
。
检查此PHP: Benchmarking echo vs. print vs. printf
和结果
看来回声和打印在速度方面确实非常接近。每个命令的差异仅为2 / 1,000,000秒。这只取决于个人喜好。我使用echo,因为这是我先用的。当你指定一个变量时,打印速度会下降,此时命令速度会下降1 / 100,000秒,这仍然相当小。
表格链接
答案 2 :(得分:3)
printf
与使用echo
非常不同,首先printf
是一个返回值的函数,而echo
是通常所说的“语言构造“。
printf
的第一个参数应该是 format-string ,正如其名称所暗示的那样,用于格式化输出的字符串。
echo
将按原样输出传递给它的“参数”(在变量插值之后),而printf
将根据第一个进行操作format-string ,如前所述。
例如,请尝试以下代码段并注意一些主要差异。
echo "I like %s! hello ", "world", " /stackoverflow" ;
echo "\n"
printf ("I like %s! hello ", "world", " /stackoverflow");
输出
I like %s! hello world /stackoverflow
I like world! hello
使用我的 BlackBerry 编写和编辑,对于任何格式错误感到抱歉..
答案 3 :(得分:0)
echo - 输出一个或多个字符串
echo实际上不是一个函数(它是一种语言结构),所以你不需要使用括号。 echo(与其他一些语言结构不同)的行为不像函数,所以它不能总是在函数的上下文中使用。此外,如果要将多个参数传递给echo,则不能将参数括在括号内。
printf - 输出格式化字符串
返回输出字符串的长度