这似乎是一个非常愚蠢的问题,但是在 PHP 中存在 printf()
函数的原因是什么?
在我看来,使用 echo
将获得完全相同的结果,如果您在一行上输出多个变量,您将不会感到困惑(是的,您可以使用 %1$s
而不是仅仅使用 %s
,但它仍然会因为声明了几个变量而变得困惑)。
我知道您还可以定义变量的类型,而无需在输出字符串之前对其进行修改,但对我来说这似乎不足以保证创建一个函数。
也许我错了,也许我遗漏了一些明显的东西,但如果有人能帮助我理解它存在的原因(以便我知道我是否真的应该使用它!),我会很感激。谢谢。
最佳答案
echo
是语言结构,printf
是函数。这意味着您将无法像使用 printf
一样使用 echo
。
这不仅仅是个人品味
查看这两个函数的手册页:
这个主题在那里讨论,例如,你不能用变量函数调用echo
。此外,他们获取和管理输入的方式也不同。如果您不需要 printf
提供的参数 FORMATTING,您应该使用 echo
(速度稍快)。
例子
我再次强调一些关键词:formatting 和function。
printf
的使用不是连接字符串或从占位符构建字符串,而是使用自定义格式(可能来自配置、用户输入或其他任何内容)。
我写了一些代码来解释我的意思(原始来源在我发布的链接中)。
此代码无效,echo
不是函数,因此它不会返回打印值(您可以使用 print
或 sprintf
为此,print
不提供字符串连接)。
($some_var) ? echo 'true' : echo 'false';
以下代码打印格式化字符串,在本例中格式来自文字变量,但它可能来自(例如)GET 请求或其他任何内容。你能用 echo
和从配置中获取的格式化字符串重写它吗?
%format = "%'.-15.15s%'.6.6s\n";
printf($format, $heading1, $value1);
关于php - PHP 中 printf() 函数的用途是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10599405/