Was ist der Unterschied zwischen einfachen und doppelten Anführungszeichen in PHP?

Ich bin kein Experte in PHP-Programmierung, aber ich bin ein wenig verwirrt, warum ich etwas Code in PHP mit String in einfachen Anführungszeichen und manchmal in Anführungszeichen gesetzt sehen.

Ich weiß nur in .NET, oder die C-Sprache, wenn es in Anführungszeichen ist, bedeutet das, dass es ein Zeichen, keine Zeichenfolge ist.

PHP-Strings können nicht nur auf zwei Arten, sondern auf vier Arten angegeben werden.

  1. Einzelne Strings in Anführungszeichen zeigen Dinge fast vollständig “wie sie sind” an. Variablen und die meisten Escape-Sequenzen werden nicht interpretiert. Die Ausnahme besteht darin, dass Sie ein einfaches Anführungszeichen anzeigen können, indem Sie es mit einem umgekehrten Schrägstrich zurückschicken. Um einen umgekehrten Schrägstrich anzuzeigen, können Sie es mit einem anderen umgekehrten Schrägstrich ( \\ ) entfernen .
  2. Doppelte Anführungszeichenfolgen zeigen eine Reihe von Escape-Zeichen (einschließlich einiger Regexes) an, und Variablen in den Zeichenfolgen werden ausgewertet. Ein wichtiger Punkt hier ist, dass Sie geschweifte Klammern verwenden können, um den Namen der Variablen zu isolieren, die ausgewertet werden soll . Nehmen wir zum Beispiel an, Sie haben die Variable $type und Sie, was zu echo "The $types are" Das wird nach der Variablen $types suchen. Um dies zu echo "The {$type}s are" benutze echo "The {$type}s are" Du kannst die linke Klammer vor oder nach dem Dollarzeichen setzen. Sehen Sie sich das String-Parsing an, um zu sehen, wie Sie Array-Variablen und ähnliches verwenden.
  3. Die Heredoc- Zeichenfolgensyntax funktioniert wie doppelt zitierte Zeichenfolgen. Es beginnt mit < << . Nach diesem Operator wird eine Kennung bereitgestellt, dann eine neue Zeile. Die Zeichenfolge selbst folgt und dann die gleiche Kennung erneut, um das Zitat zu schließen. Sie müssen keine Anführungszeichen in dieser Syntax vermeiden.
  4. Die String-Syntax von Nowdoc (seit PHP 5.3.0) funktioniert im Wesentlichen wie einzelne Strings in Anführungszeichen. Der Unterschied ist, dass nicht einmal einfache Anführungszeichen oder Backslashes maskiert werden müssen. Ein nowdoc wird mit derselben < << Sequenz für heredocs identifiziert, aber der folgende Bezeichner wird in einfache Anführungszeichen gesetzt, zB < <<'EOT' . In nseldoc wird keine Analyse durchgeführt.

Geschwindigkeit:
Ich würde nicht auf einfache Anführungszeichen setzen, die schneller sind als doppelte Anführungszeichen. Sie sind wahrscheinlich in bestimmten Situationen schneller. Hier ist ein Artikel, der erklärt, wie einfache und doppelte Anführungszeichen seit PHP 4.3 im Wesentlichen gleich schnell sind ( Useless Optimizations nach unten, Abschnitt C ). Diese Benchmark-Seite hat auch einen Vergleich zwischen einem und zwei Anführungszeichen. Die meisten Vergleiche sind gleich. Es gibt einen Vergleich, bei dem doppelte Anführungszeichen langsamer sind als einfache Anführungszeichen.

Die Dinge werden in Anführungszeichen, aber nicht in einzelnen Anführungszeichen ausgewertet:

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

Einzeln zitiert

Die einfachste Möglichkeit, eine Zeichenfolge anzugeben, besteht darin, sie in einfache Anführungszeichen zu setzen. Einfaches Anführungszeichen ist im Allgemeinen schneller und alles, was darin zitiert wird, wird als einfache Zeichenfolge behandelt.

Beispiel:

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

Doppelt zitiert

Verwenden Sie doppelte Anführungszeichen in PHP, um zu vermeiden, dass Sie den Punkt verwenden müssen, um Code zu trennen (Hinweis: Verwenden Sie geschweifte Klammern {} , um Variablen einzufügen, wenn Sie den Verkettungsoperator ( . ) Nicht verwenden).

Beispiel:

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

Gibt es einen Performance-Vorteil-Single-Quote vs Double-Quote in PHP?

Ja. Es ist etwas schneller, einfache Anführungszeichen zu verwenden.

PHP wird keine zusätzliche Verarbeitung verwenden, um zu interpretieren, was in dem einfachen Anführungszeichen steht. Wenn Sie doppelte Anführungszeichen verwenden, muss PHP analysieren, ob dort Variablen enthalten sind.

Eine in Anführungszeichen gesetzte Zeichenfolge enthält keine interpretierten Variablen. Eine Zeichenfolge in doppelten Anführungszeichen tut dies.

Eine Zeichenfolge mit doppelten Anführungszeichen kann auch Apostrophe ohne umgekehrte Schrägstriche enthalten, während eine Zeichenfolge mit einfachen Anführungszeichen nicht verzerrte Anführungszeichen enthalten kann.

Die in Anführungszeichen gesetzten Strings sind zur Laufzeit schneller, da sie nicht analysiert werden müssen.

In PHP sind sowohl 'my name' als auch 'my name' Zeichenfolge. Sie können mehr darüber im PHP-Handbuch lesen.

Was du wissen solltest sind

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

In PHP verwenden Leute einfache Anführungszeichen, um eine konstante Zeichenkette zu definieren, wie 'a' , 'my name' , 'abc xyz' , während doppelte Anführungszeichen verwendet werden, um eine Zeichenkette zu definieren, die eine Kennung wie "a $b $c $d" .

Und eine andere Sache ist,

 echo 'my name'; 

ist schneller als

 echo "my name"; 

aber

 echo 'my ' . $a; 

ist langsamer als

 echo "my $a"; 

Dies gilt auch für andere verwendete Zeichenfolgen.

Beispiel für einzelne, doppelte, heredoc- und nowdoc-Anführungszeichen

 < ?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 = << 

Beide Arten von eingeschlossenen Zeichen sind Zeichenfolgen. Eine Art von Quote wird zweckmäßigerweise verwendet, um die andere Art von Quote zu umschließen. "'" und '"' . Der größte Unterschied zwischen den Typen von Anführungszeichen besteht darin, dass eingeschlossene Bezeichnerreferenzen durch doppelte Anführungszeichen ersetzt werden, aber nicht durch einfache Anführungszeichen.

In PHP wird Single-Quote-Text als String-Wert betrachtet und Double-Quote-Text analysiert die Variablen, indem er deren Wert ersetzt und verarbeitet.

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

Hier wird der Wert in einem doppelten Anführungszeichen analysiert, und ein einzelnes Anführungszeichen wird als Zeichenfolgenwert betrachtet (ohne die $ test-Variable zu analysieren.)

Vielleicht bin ich etwas spät dran und ein bisschen daneben, aber hier ist es sowieso …

Sie müssen den Inhalt der Zeichenfolge nicht auswählen zwischen:
alert("It's \"game\" time."); oder alert('It\'s "game" time.');

Stattdessen können Sie wie folgt eingeben und dann doppelte oder einfache Anführungszeichen verwenden, da dies keine Rolle spielt:
alert("It's “game” time."); und alert('It's “game” time.');

 $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 

Eine Sache:

Es ist sehr wichtig zu beachten, dass die Zeile mit der Abschlusskennung von Heredoc keine anderen Zeichen außer einem Semikolon (;) enthalten darf. Das bedeutet insbesondere, dass der Bezeichner nicht eingerückt sein darf und dass vor oder nach dem Semikolon keine Leerzeichen oder Tabulatoren vorhanden sein dürfen.

Beispiel:

  $str = < <