it-swarm.com.de

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

Ich bin kein Experte für die Programmierung von PHP, aber ich bin etwas verwirrt, warum ich in PHP Code sehe, dessen Zeichenfolge in einfache und manchmal doppelte Anführungszeichen gesetzt ist.

Ich weiß nur in .NET oder der C-Sprache, ob es ein einfaches Anführungszeichen ist, das heißt, es handelt sich um ein Zeichen und nicht um eine Zeichenfolge.

719
rob waminal

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

  1. Strings in einfachen Anführungszeichen zeigen die 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 mit einem Backslash \' und einen Backslash \\ ( Also ja, auch Strings in einfachen Anführungszeichen werden analysiert ).
  2. Strings in doppelten Anführungszeichen zeigen eine Vielzahl von maskierten Zeichen (einschließlich einiger regulärer Ausdrücke) an, und Variablen in den Strings werden ausgewertet. Ein wichtiger Punkt hierbei ist, dass Sie geschweifte Klammern verwenden können, um den Namen der auszuwertenden Variablen zu isolieren . Nehmen wir zum Beispiel an, Sie haben die Variable $type und Sie, was Sie echo "The $types are" sollen. Dadurch wird nach der Variablen $types gesucht. 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 String-Analyse an, um zu sehen, wie Array-Variablen und dergleichen verwendet werden.
  3. Heredoc Die Stringsyntax funktioniert wie Strings in doppelten Anführungszeichen. Es beginnt mit <<<. Nach diesem Operator wird eine Kennung und anschließend ein Zeilenumbruch angegeben. Die Zeichenfolge selbst folgt und dann derselbe Bezeichner, um das Zitat zu schließen. Sie müssen Anführungszeichen in dieser Syntax nicht entziehen.
  4. Nowdoc (seit PHP 5.3.0) Zeichenfolgensyntax funktioniert im Wesentlichen wie Zeichenfolgen in einfachen Anführungszeichen. Der Unterschied besteht darin, dass nicht einmal einfache Anführungszeichen oder Backslashes maskiert werden müssen. Ein Nowdoc wird mit der gleichen <<< Sequenz identifiziert, die für Heredocs verwendet wird, aber der folgende Bezeichner ist in einfachen Anführungszeichen eingeschlossen, z. <<<'EOT'. In nowdoc wird kein Parsing durchgeführt.

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 in dem erklärt wird, wie einfache und doppelte Anführungszeichen seit PHP 4.3 im Wesentlichen gleich schnell sind (Useless Optimizations nach unten, Abschnitt C). Auch diese Benchmark-Seite bietet 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.

1024
Peter Ajtai

Dinge werden in doppelten Anführungszeichen bewertet, aber nicht in einfachen Anführungszeichen:

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

' Einfach zitiert

Die einfachste Möglichkeit, eine Zeichenfolge anzugeben, besteht darin, sie in einfache Anführungszeichen zu setzen. Einfache Anführungszeichen sind in der Regel schneller und alles, was in Anführungszeichen steht, wird als einfache Zeichenfolge behandelt.

Beispiel:

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

" Anführungszeichen

Verwenden Sie doppelte Anführungszeichen in PHP, um den Punkt nicht zum Trennen von Code verwenden zu müssen (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 zwischen einfachen und doppelten Anführungszeichen?

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

PHP verwendet keine zusätzliche Verarbeitung, um zu interpretieren, was im einfachen Anführungszeichen enthalten ist. Wenn Sie doppelte Anführungszeichen verwenden, muss PHP parsen, um zu überprüfen, ob Variablen in der Zeichenfolge enthalten sind.

47
Janak Kanani

Eine Zeichenfolge mit einfachen Anführungszeichen enthält keine interpretierten Variablen. Eine doppelte Anführungszeichen-Zeichenfolge.

Eine Zeichenfolge mit doppelten Anführungszeichen kann Apostrophe ohne umgekehrte Schrägstriche enthalten, während eine Zeichenfolge mit einem einfachen Anführungszeichen nicht verdeckte Anführungszeichen enthält.

Die Zeichenfolgen mit einfachen Anführungszeichen sind zur Laufzeit schneller, da sie nicht analysiert werden müssen.

35
Borealid

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

Was Sie wissen sollten, sind

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

In PHP verwenden Leute ein einfaches Anführungszeichen, um eine konstante Zeichenfolge wie 'a', 'my name', 'abc xyz' zu definieren, während doppelte Anführungszeichen verwendet werden, um einen String zu definieren, der einen Bezeichner wie "a $b $c $d" enthält.

Und anderes ist, 

echo 'my name';

ist schneller als

echo "my name";

aber

echo 'my ' . $a;

ist langsamer als

echo "my $a";

Dies trifft für andere Zeichenfolgen zu.

24
Bang Dao

Beispiel für einfache, 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 = <<<abc
    My name is {$fname}
    abc;

        // Example of nowdoc
        echo <<< 'abc'
        My name is "$name".
        Now, I am printing some
    abc;

?>
16
Rabindra Nath

In PHP wird einfacher Anführungszeichen-Text als Zeichenfolgenwert betrachtet, und bei Anführungszeichen werden die Variablen durch Ersetzen und Verarbeiten ihres Wertes analysiert.

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

In diesem Fall wird der Wert in Anführungszeichen gesetzt, und der einfache Anführungsstrich wird als Zeichenfolgenwert betrachtet (ohne die $ test-Variable zu analysieren.)

12
Maulik Bhojani

Beide Arten von eingeschlossenen Zeichen sind Zeichenfolgen. Eine Art von Angebot wird praktischerweise verwendet, um die andere Art von Angebot einzuschließen. "'" und '"'. Der größte Unterschied zwischen den Anführungszeichenarten besteht darin, dass eingeschlossene Bezeichnerreferenzen in doppelte Anführungszeichen gesetzt werden, nicht jedoch in einfache Anführungszeichen.

11
wallyk

Vielleicht bin ich ein bisschen spät und ein wenig abseits, aber hier ist es trotzdem…

Sie müssen sich nicht für den Inhalt Ihrer Zeichenfolge entscheiden:
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.');

0
Takit Isy