当我使用双引号时,为什么PHP中的printf()不起作用?

时间:2011-03-14 09:35:57

标签: php wordpress printf

printf("by %1$s on %2$s", 'string1', 'string2');不起作用,而printf('by %1$s on %2$s', 'string1', 'string2');则不起作用。

我实际上正在设计一个Wordpress主题,并且非常密切地遵循原始的二十世纪主题。奇怪的是,我一直在所有以前的printf()语句中使用双引号,没有任何问题。

4 个答案:

答案 0 :(得分:11)

因为当您使用双引号时,$s被视为变量

如:

$x = "World";
echo "Hello $x"; // Will print: "Hello World

使用时的地方:

$x = "World";
echo 'Hello $x'; // Will just print "Hello $x"

有关更详细的说明,请查看手册:

Strings in General

Single quoted vs Double quoted

答案 1 :(得分:3)

非常重要的是要实现php以不同方式处理单引号和双引号字符串。

您可以在官方php docs中阅读更多内容,但请允许我给您一个亮点:

$t = 'bla';
echo '$t';

将输出$ t,其中<​​/ p>

$t = 'bla';
echo "$t";

将输出bla

答案 2 :(得分:2)

那是因为你的字符串中有'$ s'位。当使用双引号时,PHP将其解释为变量并尝试解析它。您可能之前使用过不带$的双引号。

答案 3 :(得分:1)

正如其他答案所说,它将$s视为变量,您可以随时转义$

printf("by %1\$s on %2\$s", 'string1', 'string2');

但是我会使用单引号,因为php不需要解析字符串,因此速度更快。