PHP – Variablen in Strings verketten oder direkt einfügen

Lesezeit: 5 Minuten

Ich frage mich, was ist der richtige Weg, um PHP-Variablen in eine Zeichenfolge einzufügen?

Diesen Weg:

echo "Welcome ".$name."!"

Oder so:

echo "Welcome $name!"

Beide Methoden funktionieren in meiner PHP v5.3.5. Letzteres ist kürzer und einfacher, aber ich bin mir nicht sicher, ob das erste eine bessere Formatierung ist oder als richtiger akzeptiert wird.

  • Wenn Sie das erste tun, bevorzuge ich persönlich einzelne Anführungszeichen echo 'Welcome '.$name.'!';

    – KJYe.Name

    9. April 2011 um 15:40 Uhr

  • php.net/manual/en/…

    – Dejan Marjanović

    9. April 2011 um 15:42 Uhr

  • @ kjy112 Ich habe dasselbe in meiner Antwort gesagt, ich bin ein RIESIGER Fan von einfachen Anführungszeichen: X

    – Khez

    9. April 2011 um 15:49 Uhr

  • Persönlich ignoriere ich das gesamte “Einzelne Anführungszeichen sind effizienter” und gehe einfach zu “Verwenden Sie den Zitierstil, der die letzte Menge an internem Escaping erfordert”. Es ist höchst unwahrscheinlich, dass irgendein Code, den Sie schreiben, von MICROSKOPISCHEN Gewinnen profitieren wird, da weniger String-Parsing gegenüber einer erhöhten String-Verkettung erforderlich ist.

    – Markus B

    9. April 2011 um 16:20 Uhr

  • Der Anspruch auf Leistungsverlust ist falsch. Siehe diesen Artikel als Referenz: nikic.github.io/2012/01/09/…

    – Damian

    11. Mai 2016 um 1:17 Uhr

PHP Variablen in Strings verketten oder direkt einfugen
Pascal Martin

Zwischen diesen beiden Syntaxen sollten Sie wirklich die auswählen, die Sie bevorzugen 🙂

Ich persönlich würde in einem solchen Fall zu Ihrer zweiten Lösung gehen (Variableninterpolation)die ich leichter zu schreiben und zu lesen finde.

Das Ergebnis wird dasselbe sein; und selbst wenn es Auswirkungen auf die Leistung gibt, spielen diese keine Rolle 1.

Als Nebenbemerkung, also ist meine Antwort etwas vollständiger: An dem Tag, an dem Sie so etwas tun möchten:

echo "Welcome $names!";

PHP interpretiert Ihren Code so, als ob Sie versuchen würden, die zu verwenden $names Variable – die nicht existiert. – Beachten Sie, dass es nur funktioniert, wenn Sie “” und nicht “” für Ihre Zeichenfolge verwenden.

An diesem Tag müssen Sie verwenden {}:

echo "Welcome {$name}s!"

Es ist nicht erforderlich, auf Verkettungen zurückzugreifen.

Beachten Sie auch, dass Ihre erste Syntax:

echo "Welcome ".$name."!";

Könnte wohl sein optimiertVermeidung von Verkettungen, mit:

echo "Welcome ", $name, "!";

(Aber wie ich schon sagte, das spielt keine Rolle …)

1 – Es sei denn, Sie führen Hunderttausende von Verkettungen vs. Interpolationen durch – und das ist wahrscheinlich nicht ganz der Fall.

  • Großartig, vielen Dank! Es ist sehr schön zu wissen, dass ich meine Lieblingsmethode verwenden kann, um sie direkt in den String einzufügen, und ich bin sehr dankbar, dass ich jetzt weiß, wie ich die Variable vom Rest des Stichs trennen kann, wenn nötig, indem ich die verwende {}.

    – Webdesigner

    9. April 2011 um 15:51 Uhr


  • Nur eine Anmerkung, dass das Trennen der Zeichenfolgenliterale und Variablen mit Kommas nur mit funktioniert echonirgendwo sonst.

    – Colincameron

    4. Februar 2013 um 12:35 Uhr

  • Nur zur Leistung: time php -r '$string=""; for ($i=0;$i<199999;$i++){ $string = $string.$i; } print("Done!\n");' (Verkettung) verliert tatsächlich um etwa 300 Millisekunden (bei 200.000 Elementen ist das 1 miliseconf pro tausend Elemente in Ihrem Set …). Das ist statistisches Rauschen, es ist unmöglich, überhaupt einen Unterschied zu messen. In Anbetracht dessen, dass es besser lesbar ist, time php -r '$string=""; for ($i=0;$i<199999;$i++){ $string = "{$string}{$i}"; } print("Done!\n");' (Interpolation) ist der unangefochtene Gewinner…

    – Fernando Cordeiro

    15. Dezember 2015 um 20:49 Uhr

  • Wenn Sie eine Interpolation verwenden möchten, müssen Sie doppelte Anführungszeichen verwenden.

    – Máxima Alekz

    26. Dezember 2016 um 6:21 Uhr

  • Ist es möglich, Funktionen innerhalb von Strings zu verwenden? like echo “Das ist {foo()} nett”; ?

    – strix25

    23. September 2018 um 20:38 Uhr

Strings in doppelten Anführungszeichen sind eleganter, da Sie Ihren String nicht jedes Mal aufbrechen müssen, wenn Sie eine Variable einfügen müssen (wie Sie es bei Strings in einfachen Anführungszeichen tun müssen).

Wenn Sie jedoch den Rückgabewert einer Funktion einfügen müssen, kann dieser nicht in eine Zeichenfolge mit doppelten Anführungszeichen eingefügt werden – selbst wenn Sie ihn mit geschweiften Klammern umgeben!

//syntax error!!
//$s = "Hello {trim($world)}!"

//the only option
$s = "Hello " . trim($world) . "!";

  • Sie können Funktionen über PHP 5.3-Variablenfunktionen halbindirekt in Strings einfügen. $x = function() { ...}; $string = "hello {$x(blah blah blah)}"das die “Einschränkung” umgeht.

    – Markus B

    9. April 2011 um 16:16 Uhr

  • @Marc Das ist cool, das wusste ich nicht! Sie können einer Variablen auch den Namen einer vorhandenen Funktion zuweisen und dasselbe tun: $x = 'trim'; $string = "hello {$x('blah blah blah')}";

    – Michael

    9. April 2011 um 16:33 Uhr


  • das ist cool, aber extrem unlesbar, also muss man es sowieso vermeiden.

    – Ihr gesunder Menschenverstand

    9. April 2011 um 16:42 Uhr

  • $s = 'Hello ' . trim($world) .'!'; Versuchen Sie, einfache Anführungszeichen zu verwenden, wenn in der Zeichenfolge nichts zu interpolieren ist. Dies verbessert die Leistung und kann als Konvention verwendet werden, um beide zu identifizieren

    – Sarath Sadasivan Pillai

    7. Mai 2015 um 12:31 Uhr


1646970848 302 PHP Variablen in Strings verketten oder direkt einfugen
Olivier Royo

Seit php4 können Sie einen String-Formatierer verwenden:

$num = 5;
$word = 'banana';
$format="can you say %d times the word %s";
echo sprintf($format, $num, $word);

Quelle: sprintf()

  • Mit Abstand die sicherste Variante. +1 für bewährte Verfahren und allgemeine Konventionen, die andere Sprachen abgleichen

    – Javier Arias

    13. März 2019 um 12:48 Uhr

Ich bevorzuge das die ganze Zeit und fand es viel einfacher.

echo "Welcome {$name}!"

Aus der Sicht des Denkens einfach, lesbar, konsistent und einfach zu verstehen (da Leistung hier keine Rolle spielt):

  • Die Verwendung von eingebetteten Variablen in doppelten Anführungszeichen kann zu komplexen und verwirrenden Situationen führen, wenn Sie Objekteigenschaften, mehrdimensionale Arrays usw. einbetten möchten. Das heißt, beim Lesen eingebetteter Variablen können Sie sich im Allgemeinen nicht sofort 100% sicher sein, wie sich das, was Sie lesen, letztendlich verhält .

  • Sie benötigen häufig Krücken wie z {} und \was IMO für Verwirrung sorgt und die Lesbarkeit der Verkettung nahezu gleichwertig, wenn nicht sogar besser macht.

  • Sobald Sie beispielsweise einen Funktionsaufruf um die var wickeln müssen htmlspecialchars($var)müssen Sie auf Verkettung umstellen.

  • AFAIK, Sie können keine Konstanten einbetten.

In einigen speziellen Fällen können “doppelte Anführungszeichen mit Einbettung von Variablen” nützlich sein, aber im Allgemeinen würde ich mich dafür entscheiden Verkettung (gegebenenfalls mit einfachen oder doppelten Anführungszeichen)

PHP Variablen in Strings verketten oder direkt einfugen
Dennis V

Ich weiß, dass diese Frage bereits eine gewählte Antwort hat, aber ich habe sie gefunden Dieser Beitrag das zeigt offensichtlich, dass die String-Interpolation schneller arbeitet als die Verkettung. Es könnte hilfreich sein für diejenigen, die noch Zweifel haben.

Ist beides okay. Verwenden Sie diejenige, die für Sie besser sichtbar ist. Und wo wir gerade von Sichtbarkeit sprechen, können Sie auch überprüfen Druckf.

989790cookie-checkPHP – Variablen in Strings verketten oder direkt einfügen

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

Privacy policy