932 Stimmen

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

Ich bin etwas verwirrt, warum ich in PHP einige Codes sehe, bei denen Strings in einfachen und manchmal in doppelten Anführungszeichen stehen.

Ich weiß nur, dass es in .NET oder in der Sprache C, wenn es in einem einfachen Anführungszeichen steht, bedeutet, dass es ein Zeichen ist, nicht eine Zeichenfolge.

1235voto

Peter Ajtai Punkte 55551

PHP-Zeichenfolgen kann nicht nur in deux Wege, sondern in vier Möglichkeiten.

  1. Einfache Anführungsstriche zeigt die Dinge fast vollständig "wie sie sind". Variablen und die meisten Escape-Sequenzen werden nicht interpretiert. Die Ausnahme ist, dass Sie ein wörtliches einfaches Anführungszeichen mit einem umgekehrten Schrägstrich ausgeben können \' und um einen Backslash anzuzeigen, können Sie ihn mit einem weiteren Backslash ausblenden \\ ( Ja, auch Zeichenfolgen in einfachen Anführungszeichen werden geparst ).
  2. Zeichenketten in Anführungszeichen zeigt eine Vielzahl von escapeten Zeichen an (einschließlich einiger Regexe), und die Variablen in den Zeichenketten werden ausgewertet. Ein wichtiger Punkt dabei ist, dass können Sie geschweifte Klammern verwenden, um den Namen der auszuwertenden Variablen zu isolieren . Nehmen wir zum Beispiel an, Sie haben die Variable $type und Sie wollen echo "The $types are" . Dabei wird nach der Variablen $types . Um dies zu umgehen, verwenden Sie 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 String-Syntax funktioniert wie bei Strings mit doppelten Anführungszeichen. Sie beginnt mit <<< . Nach diesem Operator folgt ein Bezeichner, dann ein Zeilenumbruch. Es folgt die eigentliche Zeichenkette und dann wieder derselbe Bezeichner zum Abschluss des Zitats. Bei dieser Syntax müssen Sie keine Anführungszeichen auslassen.
  4. Nowdoc (seit PHP 5.3.0) funktioniert die Stringsyntax im Wesentlichen wie bei Strings in einfachen Anführungszeichen. Der Unterschied ist, dass nicht einmal einfache Anführungszeichen oder Backslashes escaped werden müssen. Ein nowdoc wird mit dem gleichen <<< Sequenz, die für Heredocs verwendet wird, aber der nachfolgende Bezeichner wird in einfache Anführungszeichen gesetzt, z. B. <<<'EOT' . In nowdoc wird kein Parsing durchgeführt.

Notas: Einfache Anführungszeichen innerhalb von einfachen Anführungszeichen und doppelte Anführungszeichen innerhalb von doppelten Anführungszeichen müssen escaped werden:

$string = 'He said "What\'s up?"';
$string = "He said \"What's up?\"";

Geschwindigkeit:
Ich würde nicht zu viel Gewicht darauf legen, dass einfache Anführungszeichen schneller sind als doppelte Anführungszeichen. In bestimmten Situationen sind sie wahrscheinlich schneller. Hier ist ein Artikel eine Erklärung, warum einfache und doppelte Anführungszeichen seit PHP 4.3 im Wesentlichen gleich schnell sind ( Useless Optimizations nach unten, Abschnitt C ). Auch dies Benchmarks-Seite hat einen Vergleich zwischen einfachen und doppelten Anführungszeichen. Die meisten Vergleiche sind identisch. Es gibt einen Vergleich, bei dem doppelte Anführungszeichen langsamer sind als einfache Anführungszeichen.

250voto

Dani Punkte 28963

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.

75voto

Janak Kanani Punkte 830

' Einzeln zitiert

Die einfachste Art, eine Zeichenkette anzugeben, ist, sie in einfache Anführungszeichen einzuschließen. Einfache Anführungszeichen sind im Allgemeinen schneller, und alles, was in Anführungszeichen steht, wird als einfache Zeichenkette 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 den Punkt zur Trennung von Code zu vermeiden (Hinweis: Verwenden Sie geschweifte Klammern {} um Variablen einzuschließen, wenn Sie keine Verkettung verwenden wollen ( . ) Operator) in String.

Beispiel:

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

Gibt es einen Leistungsvorteil einfaches Anführungszeichen vs. doppeltes Anführungszeichen in PHP?

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

PHP verwendet keine zusätzliche Verarbeitung, um zu interpretieren, was sich innerhalb des einfachen Anführungszeichens befindet. Wenn Sie doppelte Anführungszeichen verwenden, muss PHP prüfen, ob sich innerhalb der Zeichenkette irgendwelche Variablen befinden.

44voto

Borealid Punkte 90999

Bei einer Zeichenkette, die in einfachen Anführungszeichen steht, werden keine Variablen innerhalb der Zeichenkette interpretiert. Bei einer Zeichenkette in doppelten Anführungszeichen schon.

Außerdem kann eine Zeichenkette in doppelten Anführungszeichen Apostrophe ohne Backslashes enthalten, während eine Zeichenkette in einfachen Anführungszeichen Anführungszeichen ohne Schrägstrich enthalten kann.

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

37voto

Bang Dao Punkte 5011

In PHP werden sowohl 'my name' y "my name" sind String. 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 verwendet man einfache Anführungszeichen, um eine konstante Zeichenkette zu definieren, wie 'a' , 'my name' , 'abc xyz' , während die Verwendung von Anführungszeichen zur Definition einer Zeichenkette Bezeichner enthält wie "a $b $c $d" .

Und eine andere Sache ist,

echo 'my name';

ist schneller als

echo "my name";

sondern

echo 'my ' . $a;

ist langsamer als

echo "my $a";

Dies gilt auch für andere verwendete Zeichenfolgen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X