Ich frage mich, wie PHP-Variablen in eine Zeichenfolge eingefügt werden können.
Diesen Weg:
echo "Welcome ".$name."!"
Oder so:
echo "Welcome $name!"
Beide Methoden funktionieren in meinem PHP v5.3.5
. Letzteres ist kürzer und einfacher, aber ich bin mir nicht sicher, ob das erste besser formatiert oder als besser akzeptiert akzeptiert wird.
php
string
variables
concatenation
Webdesigner
quelle
quelle
echo 'Welcome '.$name.'!';
Antworten:
Zwischen diesen beiden Syntaxen sollten Sie wirklich die auswählen, die Sie bevorzugen :-)
Persönlich würde ich in einem solchen Fall mit Ihrer zweiten Lösung (Variableninterpolation) gehen , die ich sowohl schreiben als auch lesen leichter finde.
Das Ergebnis wird das gleiche sein; und selbst wenn es Auswirkungen auf die Leistung gibt, spielen diese keine Rolle 1 .
Als Nebenbemerkung ist meine Antwort etwas vollständiger: Der Tag, an dem Sie so etwas tun möchten:
PHP interpretiert Ihren Code so, als ob Sie versuchen würden, die
$names
Variable zu verwenden - die nicht existiert. - Beachten Sie, dass es nur funktioniert, wenn Sie "" nicht "für Ihre Zeichenfolge verwenden.An diesem Tag müssen Sie Folgendes verwenden
{}
:Keine Notwendigkeit, auf Verkettungen zurückzugreifen.
Beachten Sie auch, dass Ihre erste Syntax:
Könnte wahrscheinlich optimiert werden , um Verkettungen zu vermeiden, indem:
(Aber wie ich bereits sagte, ist das nicht wichtig ...)
1 - Es sei denn, Sie führen Hunderttausende von Verkettungen oder Interpolationen durch - und das ist wahrscheinlich nicht ganz der Fall.
quelle
{}
.echo
, nirgendwo anders.time php -r '$string=""; for ($i=0;$i<199999;$i++){ $string = $string.$i; } print("Done!\n");'
(Verkettung) verliert tatsächlich um etwa 300 Millisekunden (für 200.000 Elemente entspricht dies 1 Miliseconf pro tausend Elemente auf Ihrem Set ...). Das ist statistisches Rauschen, es ist unmöglich, einen Unterschied zu messen. In Anbetracht dessen, dass es besser lesbar ist, isttime php -r '$string=""; for ($i=0;$i<199999;$i++){ $string = "{$string}{$i}"; } print("Done!\n");'
(Interpolation) der unbestrittene Gewinner ...Zeichenfolgen mit doppelten Anführungszeichen sind eleganter, da Sie Ihre Zeichenfolge nicht jedes Mal auflösen müssen, wenn Sie eine Variable einfügen müssen (wie dies bei Zeichenfolgen mit einfachen Anführungszeichen der Fall ist).
Wenn Sie jedoch den Rückgabewert einer Funktion einfügen müssen, kann dieser nicht in eine Zeichenfolge in doppelten Anführungszeichen eingefügt werden - selbst wenn Sie ihn mit geschweiften Klammern umgeben!
quelle
$x = function() { ...}; $string = "hello {$x(blah blah blah)}"
, was die "Einschränkung" umgeht.$x = 'trim'; $string = "hello {$x('blah blah blah')}";
$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 identifizierenSeit php4 können Sie einen String-Formatierer verwenden:
Quelle: sprintf ()
quelle
Ist beides okay. Verwenden Sie diejenige, die für Sie eine bessere Sichtbarkeit bietet. Apropos Sichtbarkeit: Sie können sich auch printf ansehen .
quelle
Unter dem Gesichtspunkt, Gedanken einfach , lesbar , konsistent und leicht verständlich zu machen (da Leistung hier keine Rolle spielt):
Die Verwendung eingebetteter Variablen in doppelten Anführungszeichen kann zu komplexen und verwirrenden Situationen führen, in denen Sie Objekteigenschaften, multidimentionale Arrays usw. einbetten möchten. Das heißt, beim Lesen eingebetteter Variablen können Sie im Allgemeinen nicht sofort 100% ig sicher sein, wie Sie sich endgültig verhalten .
Sie müssen häufig Krücken wie
{}
und\
hinzufügen, was IMO Verwirrung stiftet und die Lesbarkeit der Verkettung nahezu gleichwertig macht, wenn nicht sogar besser.Sobald Sie beispielsweise einen Funktionsaufruf um die Variable wickeln müssen
htmlspecialchars($var)
, müssen Sie zur Verkettung wechseln.AFAIK, Sie können keine Konstanten einbetten.
In einigen speziellen Fällen kann "doppelte Anführungszeichen mit Einbettung von Variablen" nützlich sein, aber im Allgemeinen würde ich mich für eine Verkettung entscheiden (wenn es zweckmäßig ist, einfache oder doppelte Anführungszeichen verwenden)
quelle
Ich weiß, dass diese Frage bereits eine gewählte Antwort hat, aber ich habe diesen Artikel gefunden , der offensichtlich zeigt, dass die String-Interpolation schneller funktioniert als die Verkettung. Es könnte für diejenigen hilfreich sein, die noch Zweifel haben.
quelle
Gehen Sie mit dem ersten und verwenden Sie einfache Anführungszeichen!
Die einzigen Situationen , wenn Sie doppelte Anführungszeichen verwenden sollten, ist , wenn Sie brauchen
\r
,\n
,\t
! Der Aufwand lohnt sich einfach nicht, um ihn in einem anderen Fall zu verwenden.Sie sollten auch prüfen , PHP - Variablen Verkettung , phpbench.com für einige Benchmarks auf verschiedene Methoden der Dinge zu tun.
quelle
\r
,\n
und\t
da andere Antworten dieses Bit nicht enthielten.Es ist nur Geschmackssache.
Verwenden Sie, was Sie wollen.
Die meiste Zeit benutze ich die zweite, aber es kommt darauf an.
Lassen Sie mich Ihnen auch vorschlagen, sich einen guten Editor zu besorgen, der eine Variable innerhalb eines Strings hervorhebt
quelle
Nicht verketten. Es wird nicht benötigt, wir Kommas, da das Echo mehrere Parameter annehmen kann
In Bezug auf einfache oder doppelte Anführungszeichen ist der Unterschied vernachlässigbar. Sie können Tests mit einer großen Anzahl von Zeichenfolgen durchführen, um diese selbst zu testen.
quelle
Sie sollten den ersten wählen. Sie haben keinen Unterschied, außer der Leistung, bei der die erste im Vergleich zur zweiten die schnellste ist.
Wenn die Variable in PHP mit doppelten Anführungszeichen Zeit benötigt, um die Variable zu analysieren.
Überprüfen Sie diese einfachen oder doppelten Anführungszeichen für die variable Verkettung?
Dies ist ein weiteres Beispiel. Gibt es in PHP einen Leistungsvorteil für ein einfaches Anführungszeichen gegenüber einem doppelten Anführungszeichen?
Ich habe nicht verstanden, warum diese Antwort im obigen Link positiv bewertet wurde und warum diese Antwort abgelehnt wurde.
Wie ich schon sagte.
Sie können auch hier anschauen
Was ist schneller in PHP, einfachen oder doppelten Anführungszeichen?
quelle
Wenn Sie einen
SQL
Befehl ausführen möchten und Ihre Variablen Array-Mitglieder sind, sollten Sie keine einfachen Anführungszeichen innerhalb[]
des Arrays verwenden (wie folgt :)['']
; Wenn Sie diese Zeichenfolge beispielsweise als SQL-Befehl verwenden, erhalten Sieserver error 500
:Die richtige Zeichenfolge lautet:
quelle
Ich weiß, dass dies eine alte Frage ist, aber ich denke, jemand muss alle Vor- und Nachteile erwähnen:
Bessere Syntax : Das ist persönliche Präferenz.
Leistung : Kein Unterschied. Wie bereits erwähnt, ist das doppelte Anführungszeichen möglicherweise schneller, wenn unrealistisch viele Variablen verwendet werden.
Bessere Verwendung : Einfaches Anführungszeichen (meistens). Wie @Khez sagte, können Sie mit einem einfachen Anführungszeichen alles verketten, sogar Funktionsaufrufe und Variablenänderungen, wie folgt :
echo 'hi ' . trim($name) . ($i + 1);
. Das einzige , was doppelte Anführungszeichen tun kann , dass einzelne Anführungszeichen nicht tun kann ist die Nutzung von\n
,\r
,\t
und gleichermaßen.Lesbarkeit : Kein Unterschied (möglicherweise gelten persönliche Vorlieben).
Schreibbarkeit / Umschreibbarkeit / Debugging : In einzeiligen Anweisungen gibt es keinen Unterschied, aber wenn Sie mit mehreren Zeilen arbeiten, ist es einfacher, Zeilen beim Debuggen oder Schreiben zu kommentieren / zu kommentieren. Beispielsweise:
Weniger entkommen : Einfaches Anführungszeichen. Für einfache Anführungszeichen müssen Sie nur 2 Zeichen (
'
und\
) maskieren. Für doppelte Anführungszeichen müssen Sie bei Bedarf 2 Zeichen ("
,\
) und 3 weitere Zeichen ($
,{
und}
) maskieren.Weniger Änderungen : Einfaches Anführungszeichen. Zum Beispiel, wenn Sie den folgenden Code haben:
Und Sie müssen 1 auf $ i erhöhen, damit es wie folgt aussieht:
Für ein doppeltes Anführungszeichen müssen Sie dies jedoch ändern:
dazu:
Fazit : Verwenden Sie, was Sie bevorzugen .
quelle