了解 PHP sprintf 函数的"Width Specifier"



我刚刚开始自学使用PHP编码。我正在使用的教程向我抛出了这个:

echo "Circumference of a circle with radius $x is ".sprintf("%4.2f",(2 * $x * pi()))."<br />";

我已经能够弄清楚其中大部分是什么,除了数字 4。根据 PHP 手册,sprintf 函数中 % 符号后面的数字是:

a width specifier that says how many characters (minimum) this conversion should result in.

但是,如果 $x = 1,则输出为"6.28",这显然不是 4 位数字。无论我将 4 更改为哪个数字,输出都保持不变。即使我完全删除了 4,使其显示为"%.2f",输出仍然保持不变。唯一似乎有任何影响的是,如果我将 4 更改为一个非常大的数字,例如 1000000000。然后,我收到一个错误:

Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 1006632960 bytes)

那么这4到底是要做什么的呢?

它完全按照它所说的去做,如果你查看页面源代码,你可以看到。HTML 布局引擎将所有空格折叠成一个空格标记,这就是为什么如果您查看处理后的输出,您将永远不会看到它。

最新更新