2

出于某种原因,我采用了 using printf($var)over using echo $var。我真的不知道为什么。

但是,如果我从变量输出字符串时遇到问题 - 如果我更改printf($var)echo $var- 90% 的时间可以解决问题。

这种情况发生在我身上不止一次,有不同的错误,从太少的参数到只是回显一个空/空白字符串。

任何人都可以阐明为什么printf()似乎工作不如 可靠echo吗?

4

4 回答 4

6

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

原因是$var作为第一个参数传递的被视为格式字符串,并且诸如%s%d等具有特殊含义。在 C / C++ 中,这可能会导致分段错误,而在 PHP 中,相比之下,您会受到打击。

等价于echoorprintprintf('%s', $var); 它转换$var为一个字符串,然后输出它。

顺便说一句,printf()是一个函数,而echoprint是语言结构;因此,您可能会获得更好的性能echo

于 2012-10-22T04:27:17.333 回答
3

printf — 输出一个格式化的字符串,print 返回一个值。它总是返回 1。以及 echo 的作用——输出一个或多个字符串

总是返回 1 似乎没有用。并且可以使用字符串连接或多次调用来模拟逗号分隔的参数列表

通过返回一个值,print 函数比 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:基准测试 echo vs. print vs. printf

和结果

看来 echo 和 print 在速度方面非常非常接近。每个命令的差异仅为 2/1,000,000 秒。它只是归结为个人喜好。我使用 echo 因为这是我首先使用的。当您分配一个变量时,打印速度似乎会下降,此时命令速度下降 1/100,000 秒,这仍然是相当小的。

表格上面的链接

于 2012-10-22T04:20:09.203 回答
3

printf与 using 非常不同echo,首先printf是一个返回值的函数,而echo通常称为“语言构造”。

的第一个参数printf应该是一个格式字符串,正如其名称所暗示的那样,用于格式化输出的字符串。

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编写和编辑,对于任何格式错误,我们深表歉意..

于 2012-10-22T04:24:25.663 回答
0

echo - 输出一个或多个字符串

echo 实际上不是一个函数(它是一种语言结构),因此您不需要使用括号。echo(与其他一些语言结构不同)的行为不像函数,因此它不能总是在函数的上下文中使用。此外,如果您想向 echo 传递多个参数,则这些参数不能用括号括起来。

printf — 输出格式化字符串

返回输出字符串的长度

于 2012-10-22T04:25:23.383 回答