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

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

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

Ответы

Ответ 1

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

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

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

Ответ 2

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

$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.

Ответ 3

' Одинарные кавычки

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

Пример:

echo 'Start with a simple string';
echo 'String\ apostrophe';
echo 'String with a php variable'.$name;

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

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

Пример:

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

Есть ли в PHP прямая кавычка на производительность по сравнению с двойной?

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

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

Ответ 4

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

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

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

Ответ 5

В 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";

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

Ответ 6

Пример одинарных, двойных, 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;

?>

Ответ 7

В 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.)

Ответ 8

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

Ответ 9

Может быть, я немного опоздал и немного не по теме, но здесь все равно...

Вам не нужно выбирать из-за вашего содержимого строки между:
alert("It \"game\" time."); или alert('It\ "game" time.');

Вместо этого вы можете вводить это, а затем использовать либо двойные, либо одинарные кавычки, потому что это не имеет значения:
alert("Its "game" time."); и alert('Its "game" time.');

Ответ 10

Одна вещь:

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

Пример:

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

Ответ 11

$name = 'test';
$singleQuote = 'This is example for single quote $name'; // here $name variable not evaluating 
echo $singleQuote; // Output: This is example for single quote $name
$singleQuote = "This is example for single quote $name"; // here $name variable will evaluate and replace variable value
echo $singleQuote; // Output: This is example for single quote test

Also inside single quote expression evaluate faster campare to double quotes

Ответ 12

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

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

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