В чем разница между строками с одним кавычком и двойными кавычками в PHP?

Я не специалист по программированию на PHP, но я немного смущен, почему я вижу код на PHP с строкой, помещенной в одинарные кавычки, а иногда и в двойные кавычки.

Я просто знаю в .NET или языке C, если он в одной кавычке, это означает, что это символ, а не строка.

Строки PHP могут быть указаны не только двумя способами, но и четырьмя способами.

  1. Одиночные кавычки будут отображаться почти полностью «как есть». Переменные и большинство управляющих последовательностей не будут интерпретироваться. Исключение состоит в том, что для отображения буквенной одиночной кавычки вы можете избежать ее с помощью обратной косой черты и отображать обратную косую черту, вы можете избежать ее с помощью другой обратной косой черты \\ ( Итак, да, анализируются даже одиночные кавычки ).
  2. Строки с двойными кавычками будут отображать множество экранированных символов (включая некоторые регулярные выражения), а переменные в строках будут оцениваться. Важным моментом здесь является то, что вы можете использовать фигурные скобки, чтобы изолировать имя переменной, которую вы хотите оценить . Например, допустим, у вас есть переменная $type и вы хотите, чтобы echo "The $types are" Это будет искать переменные $types . Чтобы обойти это, используйте echo "The {$type}s are" Вы можете поместить левую фигуру до или после знака доллара. Посмотрите на синтаксический анализ строк, чтобы узнать, как использовать переменные массива и т. Д.
  3. Синтаксис строки Heredoc работает как строки с двойными кавычками. Он начинается с <<< . После этого оператора предоставляется идентификатор, а затем строка новой строки. Далее следует строка, а затем тот же идентификатор, чтобы закрыть цитату. Вам не нужно скрывать кавычки в этом синтаксисе.
  4. Строка синтаксиса Nowdoc (начиная с PHP 5.3.0) работает по существу как одиночные кавычки. Разница в том, что даже одиночные кавычки или обратные косые черты должны быть экранированы. A nowdoc идентифицируется с той же последовательностью <<< , используемой для heredocs, но следующий ниже идентификатор заключен в одинарные кавычки, например <<<'EOT' . В nowdoc не выполняется синтаксический анализ.

Скорость:
Я бы не придавал слишком большого веса одиночным кавычкам быстрее, чем двойные кавычки. Вероятно, они быстрее в определенных ситуациях. Вот статья, объясняющая один способ, при котором одиночные и двойные кавычки, по существу, одинаково быстрые, начиная с PHP 4.3 ( Useless Optimizations в нижней части, раздел C ). Кроме того, эта страница эталонных тестов имеет одно-двойное сравнение. Большинство сравнений одинаковы. Существует одно сравнение, где двойные кавычки медленнее одиночных кавычек.

Вещи оцениваются в двойных кавычках, но не в одном:

 $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 'Start with a simple string'; echo 'String\'s apostrophe'; echo 'String with a php variable'.$name; 

Двойной кавычек

Используйте двойные кавычки в PHP, чтобы избежать необходимости использовать период для разделения кода (Примечание: используйте фигурные скобки {} для включения переменных, если вы не хотите использовать оператор конкатенации ( . )) В строке.

Пример:

 echo "Start with a simple string"; echo "String's apostrophe"; echo "String with a php variable {$name}"; 

Есть ли преимущества по силе производительности по сравнению с двойной цитатой в PHP?

Да. Немного быстрее использовать одинарные кавычки.

PHP не будет использовать дополнительную обработку для интерпретации того, что находится внутри одной кавычки. когда вы используете двойные кавычки, PHP должен анализировать, чтобы проверить, есть ли там какие-либо переменные.

Строка с одним кавычком не содержит переменных в интерпретации. Строка с двойными кавычками.

Кроме того, строка с двумя кавычками может содержать апострофы без обратных косых черт, в то время как строка с одним кавычком может содержать неэксклюзивные кавычки.

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

В PHP как 'my name' и "my name" являются строками. Вы можете узнать больше об этом в руководстве по PHP .

Вещь, которую вы должны знать, это

 $a = 'name'; $b = "my $a"; == 'my name' $c = 'my $a'; != 'my name' 

В PHP люди используют одиночную кавычку для определения константной строки, например 'a' , 'my name' , 'abc xyz' , при использовании двойной кавычки для определения строки содержат идентификатор типа "a $b $c $d" .

И другое дело,

 echo 'my name'; 

быстрее, чем

 echo "my name"; 

но

 echo 'my ' . $a; 

медленнее, чем

 echo "my $a"; 

Это справедливо для других используемых строк.

Оба типа замкнутых символов – это строки. Один тип цитаты удобно использовать для включения другого типа цитаты. "'" и '"' . Самая большая разница между типами котировок заключается в том, что вложенные ссылки идентификатора заменяются внутри двойных кавычек, но не внутри одиночных кавычек.

В PHP текст с одной кавычкой рассматривается как строковое значение, а текст двойной кавычки будет анализировать переменные, заменяя и обрабатывая их значение.

 $test = "variable"; echo "Hello Mr $test"; // the output would be: Hello Mr variable echo 'Hello Mr $test'; // the output would be: Hello Mr $test 

Здесь двойная кавычка анализирует значение и одинарная кавычка рассматривается как строковое значение (без разбора переменной $ test).

Пример одиночных, двойных, heredoc, nowdoc котировок

  <?php $fname = "David"; //Single quotes echo 'My name is $fname .'; // My name is $fname. //Double quotes echo "My name is $fname."; // My name is David.` //curly braces to isolate the name of the variable echo "My name is {$fname}."; // My name is David. //Example of heredoc echo $foo = <<<abc My name is {$fname} abc; //Example of nowdoc echo <<<'abc' My name is "$name". Now, I am printing some abc; ?> 

Одна вещь:

Очень важно отметить, что строка с закрывающим идентификатором Heredoc не должна содержать других символов, кроме точки с запятой (;) . Это означает, что идентификатор не может быть отступом , и не должно быть пробелов или вкладок до или после точки с запятой.

Пример:

  $str = <<<EOD Example of string spanning multiple lines using heredoc syntax. EOD; 

Если мы используем двойные кавычки в выражении echo, он будет проверять как переменные, так и строку.

Если мы используем одинарные кавычки в выражении echo, он будет рассматривать все данные только как строку.

для получения дополнительной информации см. http://phptutorial.co.in/php-echo-print/