Почему printf () в PHP не работает, когда я использую двойные кавычки? - PullRequest
5 голосов
/ 14 марта 2011

printf("by %1$s on %2$s", 'string1', 'string2'); не работает, тогда как printf('by %1$s on %2$s', 'string1', 'string2'); работает.

Я на самом деле разрабатываю тему Wordpress и очень внимательно слежу за оригинальной двадцаткой. Странно то, что я использовал двойные кавычки во всех моих предыдущих выражениях printf () без каких-либо проблем.

Ответы [ 4 ]

11 голосов
/ 14 марта 2011

Поскольку при использовании двойных кавычек $s рассматривается как переменная

Как в:

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

где как при использовании:

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

Более подробное объяснение вы можете найти в руководстве:

Общие строки

Одинарная кавычка против Двойная кавычка

3 голосов
/ 14 марта 2011

Очень важно понимать, что php обрабатывает одинарные и двойные кавычки по-разному.

Вы можете прочитать больше в официальных документах php , но позвольте мне выделить вам:

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

выдаст $ t, где

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

выведет бла

2 голосов
/ 14 марта 2011

Это потому, что в вашей строке есть бит '$ s'. При использовании двойных кавычек PHP интерпретирует его как переменную и пытается его проанализировать. Вы, вероятно, использовали двойные кавычки без $ в нем ранее.

1 голос
/ 14 марта 2011

Как говорят другие ответы, он обрабатывает $s как переменную, вы всегда можете избежать $

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

Однако я бы использовал одинарные кавычки, так как php не нужно разбирать строку и, следовательно, быстрее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...