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

Lesezeit: 8 Minuten

Was ist der Unterschied zwischen Zeichenfolgen in einfachen und doppelten
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.

1647102850 492 Was ist der Unterschied zwischen Zeichenfolgen in einfachen und doppelten
Peter Aytai

PHP-Strings kann nicht nur in angegeben werden zwei Wege, aber in vier Wege.

  1. 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).
  2. 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.
  3. 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.
  4. 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.

  • +1 für den Trick mit geschweiften Klammern. War mir dessen nicht bewusst. Schade, dass es nicht den gleichen Konventionen wie Shell-Skripte folgt, dh ${variablename}.

    – devios1

    25. Juli 2013 um 0:26 Uhr


  • Ich verwende nur doppelte Anführungszeichen, wenn ich es brauche \nalles andere in meinem PHP Code steht in einfachen Anführungszeichen.

    – Jo Smo

    4. Juli 2014 um 13:26 Uhr

  • scheint ‘heredoc’ von bash nach PHP portiert zu sein oder nicht? Wie auch immer, tolle Antwort, also ein +1 Danke.

    – sjsam

    8. Januar 2015 um 6:20 Uhr

  • Interessanter Hinweis in den Kommentaren der PHP-Dokumentation: php.net/manual/en/language.types.string.php#120160 – “Die Zeichenfolgen in doppelten Anführungszeichen, “die so $langsam aussehen, da sie alles für \n Backslashes und $Dollarzeichen parsen müssen, um Variablen zu erweitern”, erwiesen sich als die SCHNELLSTE Methode zur Zeichenfolgenverkettung in PHP – PERIOD! Einfache Anführungszeichen sind nur schneller, wenn Ihre Zeichenfolge vollständig wörtlich ist (ohne etwas zu analysieren und nichts zu verketten), aber der Rand ist sehr klein und spielt keine Rolle.

    – dreg

    10. August 2017 um 9:45 Uhr

  • Hinweis: Langsamkeit von " Doppelte Anführungszeichen gehören so gut wie der Vergangenheit an. Updates haben die Verarbeitung von doppelten Anführungszeichen so schnell gemacht, dass sie heutzutage in allen außer extremen Fällen genauso schnell sind.

    – SherylHohman

    19. Januar 2019 um 20:45 Uhr

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.

  • Mit Escapezeichen versehene einfache Anführungszeichen und mit Escapezeichen versehene umgekehrte Schrägstriche werden sogar in Zeichenfolgen mit einfachen Anführungszeichen erweitert.

    – Peter Ajtai

    10. August 2010 um 5:34 Uhr

  • Ein Fehler, den viele PHP-Neulinge begehen: $mailbody = 'I want a line break:\nDone.'; hält die \n am Leben. Wohingegen: $mailbody = "I want a line break:\nDone."; analysiert den Zeilenumbruch.

    – Benutzerbild

    18. April 2014 um 14:25 Uhr


  • Meine zwei Cent werden nur für Interviews oder für die Malware-Entwicklung benötigt. Vergleichen Sie einfach var_dump() mit zwei Ausdrücken: $testWithAsciiAndUtf8Characters = "\x48\x41\x4c\114\117 \u{0147}\u{012B}\u{0144}\u{014D}!"; $simpleTest = '\x48\x41\x4c\114\117 \u{0147}\u{012B}\u{0144}\u{014D}!'; Zeichenfolgen ein $testWithAsciiAndUtf8Characters wurden in Strings mit echten Buchstaben umgewandelt.

    – Rostyslav Pylypenko

    20. November 2018 um 11:26 Uhr


Was ist der Unterschied zwischen Zeichenfolgen in einfachen und doppelten
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.

  • Die ein Ausnahme zu einfachen Anführungszeichen NICHT innerhalb der Zeichenfolge analysieren, ist das, was Sie verwenden können \' um ein einzelnes Apostroph für die Verwendung innerhalb der Zeichenfolge zu maskieren (oder \\' um den Backslash anzuzeigen). Beachten Sie, dass herkömmliche Escape-Sequenzen wie z \n wird NICHT in das Zeilenumbruchzeichen geparst. PHP-Dokumentation zu Strings

    – SherylHohman

    19. Januar 2019 um 20:48 Uhr

  • Ich sehe in allen Antworten Folgendes: Sie können den Variablennamen in doppelten Anführungszeichen verwenden, um den Wert der Variablen auszudrucken, aber Sie sagen, der Variablenname sollte auch in geschweiften Klammern eingeschlossen sein, um die Verwendung einer Verkettung zu vermeiden Zeitraum. Wenn also sowohl “$my_var” als auch “{$my_var}” den Wert von $my_var ausgeben, wofür sind dann die geschweiften Klammern? Danke!

    – Bahman.A

    10. Dezember 2019 um 21:27 Uhr


  • @Bahman.AI weiß, dass es Jahre her ist, und Sie kennen die Antwort wahrscheinlich bereits zu diesem Zeitpunkt, aber falls andere in Zukunft nach demselben suchen: Die geschweiften Zweige werden hinzugefügt, wenn Vars in doppelten Anführungszeichen verwendet werden, hauptsächlich zur Lesbarkeit des Codes. Sehr nützlich, wenn Sie schnell nach Grok scannen, es ist eine Variable und kein Zeichenfolgenliteral.

    – William Patton

    11. August 2021 um 12:43 Uhr

  • @Bahman.AI glauben, dass der Grund, warum Sie verwenden würden "{$one}" anstatt "$one" dient nicht der Lesbarkeit, sondern der exakten Variablensuche. { } ermöglicht auch Array- und Objektsuchen. Der Punktoperator, der zur Verkettung von Zeichenfolgen verwendet wird, wäre weiterhin für eine Funktionssuche erforderlich

    – Justin L

    8. Februar um 8:57 Uhr

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.

1647102850 690 Was ist der Unterschied zwischen Zeichenfolgen in einfachen und doppelten
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.

1647102851 367 Was ist der Unterschied zwischen Zeichenfolgen in einfachen und doppelten
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!

994390cookie-checkWas ist der Unterschied zwischen Zeichenfolgen in einfachen und doppelten Anführungszeichen in PHP?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy