В чем разница между строками в одинарных и двойных кавычках в PHP?
Я немного запутался, почему в коде на PHP строки иногда заключены в одинарные кавычки, а иногда в двойные.
Я знаю, что в .NET или языке C одинарные кавычки обозначают символ, а не строку. Почему в PHP используется два разных типа кавычек для строк? В чем разница между ними и когда следует использовать тот или иной вариант?
4 ответ(ов)
В PHP строковые литералы в двойных кавычках ("
) выполняют интерполяцию переменных, в то время как строки в одинарных кавычках ('
) интерпретируются как литералы. Это означает, что переменные, заключенные в двойные кавычки, будут заменены на их значения, а в одинарных кавычках они будут отображаться как есть.
Вот пример, который вы привели:
$s = "dollars";
echo 'This costs a lot of $s.'; // Вывод: This costs a lot of $s.
echo "This costs a lot of $s."; // Вывод: This costs a lot of dollars.
В первом echo
, где используются одинарные кавычки, PHP не выполняет интерполяцию переменной $s
, и поэтому выводится именно строка $s
. Во втором случае, где используются двойные кавычки, PHP интерполирует переменную $s
, и выводится её значение — dollars
.
В строках, заключённых в одинарные кавычки, переменные не интерпретируются. В то время как в строках, заключённых в двойные кавычки, они интерпретируются.
Кроме того, в строках с двойными кавычками можно использовать апострофы без экранирования, в то время как в строках с одинарными кавычками можно использовать неэкранированные кавычки.
Обе категории заключённых символов представляют собой строки. Один тип кавычек удобно используется для заключения другого типа кавычек: '"'
и '"'
. Наиболее значительное отличие между этими типами кавычек заключается в том, что ссылки на идентификаторы, заключённые в двойные кавычки, заменяются на соответствующие значения, тогда как в одинарных кавычках этого не происходит.
Некоторые могут сказать, что я немного ускочил с темы, но вот это всё равно:
Вам не обязательно выбирать между содержимым строки:
echo "It's \"game\" time.";
или
echo 'It\'s "game" time.';
Если вы знакомы с использованием английских кавычек и правильным символом для апострофа, вы можете использовать как одинарные, так и двойные кавычки, поскольку это уже не будет иметь значения:
echo "It’s “game” time.";
и
echo 'It’s “game” time.';
Конечно, вы также можете добавлять переменные, если это необходимо. Но не забывайте, что они будут evaluated (evaluated — выполняться, обрабатываться) только в двойных кавычках!
Как проверить, содержит ли строка конкретное слово?
Функции startsWith() и endsWith() в PHP
Удалить пустые элементы массива
Генератор случайных строк на PHP
Можно ли использовать одинарные и двойные кавычки в строковых литералах JavaScript взаимозаменяемо?