在PHP中,printf()不如echo可靠吗?

时间:2012-10-22 04:18:25

标签: php printf echo

出于某种原因,我已使用printf($var)而不是使用echo $var。我真的不知道为什么。

但是,如果我从变量中输出字符串似乎有问题 - 如果我将printf($var)更改为echo $var - 90%的时间它会解决问题。

我不止一次遇到过不同的错误,从参数太少到回显空/空字符串。

有人可以解释为什么printf()似乎比echo效率低的原因?

4 个答案:

答案 0 :(得分:6)

简短回答,除非您特别需要,否则不要使用printf($var)

原因是$var作为第一个参数传递被视为格式字符串%s%d之类的内容有<强>特殊含义。在C / C ++中,这可能会导致分段错误,而在PHP中,您可以在手腕上获得一记耳光。

相当于echoprintprintf('%s', $var);它将$var转换为字符串然后输出。

顺便说一下,printf()是一个函数,而echoprint是语言结构;因此,使用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 - 输出格式化字符串

返回输出字符串的长度