出于某种原因,我采用了 using printf($var)
over using echo $var
。我真的不知道为什么。
但是,如果我从变量输出字符串时遇到问题 - 如果我更改printf($var)
为echo $var
- 90% 的时间可以解决问题。
这种情况发生在我身上不止一次,有不同的错误,从太少的参数到只是回显一个空/空白字符串。
任何人都可以阐明为什么printf()
似乎工作不如 可靠echo
吗?
简短的回答,printf($var)
除非您特别需要,否则请勿使用。
原因是$var
作为第一个参数传递的被视为格式字符串,并且诸如%s
和%d
等具有特殊含义。在 C / C++ 中,这可能会导致分段错误,而在 PHP 中,相比之下,您会受到打击。
等价于echo
orprint
是printf('%s', $var)
; 它转换$var
为一个字符串,然后输出它。
顺便说一句,printf()
是一个函数,而echo
和print
是语言结构;因此,您可能会获得更好的性能echo
。
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 秒,这仍然是相当小的。
表格上面的链接
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编写和编辑,对于任何格式错误,我们深表歉意..
echo - 输出一个或多个字符串
echo 实际上不是一个函数(它是一种语言结构),因此您不需要使用括号。echo(与其他一些语言结构不同)的行为不像函数,因此它不能总是在函数的上下文中使用。此外,如果您想向 echo 传递多个参数,则这些参数不能用括号括起来。
printf — 输出格式化字符串
返回输出字符串的长度