php - PHP 中 printf() 函数的用途是什么?

标签 php printf

这似乎是一个非常愚蠢的问题,但是在 PHP 中存在 printf() 函数的原因是什么?

在我看来,使用 echo 将获得完全相同的结果,如果您在一行上输出多个变量,您将不会感到困惑(是的,您可以使用 %1$s 而不是仅仅使用 %s,但它仍然会因为声明了几个变量而变得困惑)。

我知道您还可以定义变量的类型,而无需在输出字符串之前对其进行修改,但对我来说这似乎不足以保证创建一个函数。

也许我错了,也许我遗漏了一些明显的东西,但如果有人能帮助我理解它存在的原因(以便我知道我是否真的应该使用它!),我会很感激。谢谢。

最佳答案

echo 是语言结构,printf 是函数。这意味着您将无法像使用 printf 一样使用 echo

这不仅仅是个人品味

查看这两个函数的手册页:

这个主题在那里讨论,例如,你不能用变量函数调用echo。此外,他们获取和管理输入的方式也不同。如果您不需要 printf 提供的参数 FORMATTING,您应该使用 echo(速度稍快)。

例子

我再次强调一些关键词:formattingfunctionprintf 的使用不是连接字符串或从占位符构建字符串,而是使用自定义格式(可能来自配置、用户输入或其他任何内容)。

我写了一些代码来解释我的意思(原始来源在我发布的链接中)。

此代码无效,echo 不是函数,因此它不会返回打印值(您可以使用 printsprintf 为此,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/

相关文章:

c - 如何在 C 中打印定义的字符串宏?

c - 如何将数组放入 int 但使用 scanf

php - Magento 在 sales./order 网格中显示错误的总记录

c - scanf 和 printf 未按顺序执行

c++ - Visual Studio 2015 中的格式更改

php - 为什么不能将 SplFileInfo 转换为 bool 值?

perl - 如何在不丢失精度的情况下打印 Perl bignum?

php - 比较不同表的行

php - 在 namespace 声明中定义相同 namespace 的使用是一种好习惯吗?

php - 在一个查询中获取作者用户名和上次更新用户名