
Waminal ausrauben
Ich bin ein wenig verwirrt, warum ich Code in PHP sehe, bei dem Zeichenfolgen in einfache Anführungszeichen und manchmal in doppelte Anführungszeichen gesetzt werden.
Ich weiß nur, dass in .NET oder der C-Sprache, wenn es in einem einfachen Anführungszeichen steht, es ein Zeichen und keine Zeichenfolge ist.

Peter Aytai
PHP-Strings kann nicht nur in angegeben werden zwei Wege, aber in vier Wege.
- Strings in einfachen Anführungszeichen wird die Dinge fast vollständig “wie sie sind” anzeigen. Variablen und die meisten Escape-Sequenzen werden nicht interpretiert. Die Ausnahme ist, dass Sie ein wörtliches einfaches Anführungszeichen mit einem Backslash maskieren können
\'
und um einen umgekehrten Schrägstrich anzuzeigen, können Sie ihn mit einem anderen umgekehrten Schrägstrich maskieren \\
(Also ja, sogar Strings in einfachen Anführungszeichen werden analysiert).
- Zeichenfolgen in doppelten Anführungszeichen zeigt eine Vielzahl von Escape-Zeichen (einschließlich einiger regulärer Ausdrücke) an, und Variablen in den Zeichenfolgen werden ausgewertet. Ein wichtiger Punkt hier ist das Sie können geschweifte Klammern verwenden, um den Namen der Variablen zu isolieren, die Sie auswerten möchten. Nehmen wir zum Beispiel an, Sie haben die Variable
$type
und du willst echo "The $types are"
. Das wird nach der Variablen suchen $types
. Um diese Verwendung zu umgehen echo "The {$type}s are"
Sie können die linke Klammer vor oder nach dem Dollarzeichen setzen. Schauen Sie sich an String-Parsing um zu sehen, wie man Array-Variablen und dergleichen verwendet.
- Heredoc Zeichenfolgensyntax funktioniert wie Zeichenfolgen in doppelten Anführungszeichen. Es beginnt mit
<<<
. Nach diesem Operator wird ein Bezeichner bereitgestellt, dann ein Zeilenumbruch. Es folgt die Zeichenfolge selbst und dann wieder dieselbe Kennung, um das Zitat zu schließen. Sie müssen Anführungszeichen in dieser Syntax nicht maskieren.
- Nowdoc (seit PHP 5.3.0) funktioniert die String-Syntax im Wesentlichen wie Strings in einfachen Anführungszeichen. Der Unterschied besteht darin, dass nicht einmal einfache Anführungszeichen oder Backslashes maskiert werden müssen. Ein nowdoc wird damit identifiziert
<<<
Sequenz, die für Heredocs verwendet wird, aber die folgende Kennung wird in einfache Anführungszeichen gesetzt, z <<<'EOT'
. In nowdoc wird kein Parsing durchgeführt.
Anmerkungen:
Einfache Anführungszeichen innerhalb von einfachen Anführungszeichen und doppelte Anführungszeichen innerhalb von doppelten Anführungszeichen müssen maskiert werden:
$string = 'He said "What\'s up?"';
$string = "He said \"What's up?\"";
Geschwindigkeit:
Ich würde nicht zu viel Wert darauf legen, dass einfache Anführungszeichen schneller sind als doppelte Anführungszeichen. Sie sind wahrscheinlich in bestimmten Situationen schneller. Hier ist ein Artikel Erläuterung einer Art und Weise, wie einfache und doppelte Anführungszeichen seit PHP 4.3 im Wesentlichen gleich schnell sind (Useless Optimizations
nach unten, Abschnitt C
). Auch das Benchmark-Seite hat einen Vergleich zwischen einfachen und doppelten Anführungszeichen. Die meisten Vergleiche sind gleich. Es gibt einen Vergleich, bei dem doppelte Anführungszeichen langsamer sind als einfache Anführungszeichen.
Dinge werden in doppelten Anführungszeichen ausgewertet, aber nicht in einfachen:
$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.

Janak Kanani
'
Einfach zitiert
Die einfachste Art, eine Zeichenfolge anzugeben, besteht darin, sie in einfache Anführungszeichen einzuschließen. Einfache Anführungszeichen sind 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 der Punkt zum Trennen von Code verwendet werden muss (Hinweis: Verwenden Sie geschweifte Klammern {}
um Variablen einzuschließen, wenn Sie keine Verkettung verwenden möchten (.
)-Operator) in Zeichenfolge.
Beispiel:
echo "Start with a simple string";
echo "String's apostrophe";
echo "String with a php variable {$name}";
Gibt es in PHP einen Leistungsvorteil in einfachen Anführungszeichen gegenüber doppelten Anführungszeichen?
Jawohl. Es ist etwas schneller, einfache Anführungszeichen zu verwenden.
PHP verwendet keine zusätzliche Verarbeitung, um zu interpretieren, was innerhalb des einfachen Anführungszeichens steht. Wenn Sie doppelte Anführungszeichen verwenden, muss PHP parsen, um zu prüfen, ob es irgendwelche Variablen in der Zeichenfolge gibt.
In einer Zeichenfolge mit einfachen Anführungszeichen werden keine Variablen interpretiert. Eine Zeichenfolge in doppelten Anführungszeichen tut dies.
Außerdem kann eine Zeichenfolge in doppelten Anführungszeichen Apostrophe ohne Backslashes enthalten, während eine Zeichenfolge in einfachen Anführungszeichen Anführungszeichen ohne Escapezeichen enthalten kann.
Die Zeichenfolgen in einfachen Anführungszeichen sind zur Laufzeit schneller, da sie nicht analysiert werden müssen.

Bang Dao
In PHP beides 'my name'
und "my name"
sind Schnur. Sie können mehr darüber lesen im PHP-Handbuch.
Was Sie wissen sollten, sind
$a="name";
$b = "my $a"; == 'my name'
$c="my $a"; != 'my name'
In PHP verwenden die Leute einfache Anführungszeichen, um eine konstante Zeichenfolge zu definieren, wie z 'a'
, 'my name'
, 'abc xyz'
während doppelte Anführungszeichen verwendet werden, um eine Zeichenfolge zu definieren, die Bezeichner wie enthält "a $b $c $d"
.
Und andere Sache ist,
echo 'my name';
ist schneller als
echo "my name";
aber
echo 'my ' . $a;
ist langsamer als
echo "my $a";
Dies gilt für andere Zeichenfolgen.

Wallyk
Beide Arten eingeschlossener Zeichen sind Zeichenfolgen. Ein Zitattyp wird praktischerweise verwendet, um den anderen Zitattyp einzuschließen. "'"
und '"'
. Der größte Unterschied zwischen den Arten von Anführungszeichen besteht darin, dass eingeschlossene Bezeichnerreferenzen innerhalb doppelter Anführungszeichen, aber nicht innerhalb einfacher Anführungszeichen ersetzt werden.
Einige mögen sagen, dass ich ein wenig off-topic bin, aber hier ist es trotzdem:
Du musst dich aufgrund des Inhalts deines Strings nicht unbedingt entscheiden zwischen:
echo "It's \"game\" time.";
oder echo 'It\'s "game" time.';
Wenn Sie mit der Verwendung der englischen Anführungszeichen und dem richtigen Zeichen für das Apostroph vertraut sind, können Sie entweder doppelte oder einfache Anführungszeichen verwenden, da dies keine Rolle mehr spielt:
echo "It’s “game” time.";
und echo 'It’s “game” time.';
Natürlich können Sie bei Bedarf auch Variablen hinzufügen. Vergessen Sie nur nicht, dass sie nur in doppelten Anführungszeichen ausgewertet werden!
9943900cookie-checkWas ist der Unterschied zwischen Zeichenfolgen in einfachen und doppelten Anführungszeichen in PHP?yes