printf("by %1$s on %2$s", 'string1', 'string2');
不起作用,而printf('by %1$s on %2$s', 'string1', 'string2');
则不起作用。
我实际上正在设计一个Wordpress主题,并且非常密切地遵循原始的二十世纪主题。奇怪的是,我一直在所有以前的printf()语句中使用双引号,没有任何问题。
答案 0 :(得分:11)
因为当您使用双引号时,$s
被视为变量
如:
$x = "World";
echo "Hello $x"; // Will print: "Hello World
使用时的地方:
$x = "World";
echo 'Hello $x'; // Will just print "Hello $x"
有关更详细的说明,请查看手册:
答案 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不需要解析字符串,因此速度更快。