28 Stimmen

PHP: Verwendung einer Variablen in doppelten Anführungszeichen

Überprüfen Sie bitte den folgenden Code.

$imagebaseurl = 'support/content_editor/uploads/$name';

En $imagebaseurl ist eine Variable, die einen Link zu meinem Bildordner (Uploads) enthält, und innerhalb des Ordners habe ich einige andere Ordner, die nach meinen Benutzernamen benannt sind: Ich habe einen Benutzer mit dem Namen john, also sollte der Link so aussehen-> support/content_editor/uploads/john .

Die Hauptidee ist, wenn ein Benutzer eingeloggt ist und seine Bildergalerie aufruft, möchte ich ihn zu seiner eigenen Galerie führen, die im Grunde nach seinem Namen benannt ist.

Wenn er die Galerie besucht, wird der Wert der $name in der Verknüpfung wird aus dem Anmeldenamen des Benutzers (aus der Sitzung) stammen. Das Problem ist nun, wie Sie wahrscheinlich schon verstanden haben, dass die Platzierung von $name im obigen Link ist falsch und funktioniert deshalb nicht. Ich erhalte diese ganze URL> (support/content_editor/uploads/$name) anstelle von (support/content_editor/uploads/john)

Könnten Sie mir jetzt bitte sagen, wie ich die $name hierin $imagebaseurl = 'support/content_editor/uploads/$name';

69voto

rid Punkte 58329
$imagebaseurl = 'support/content_editor/uploads/' . $name;

o

$imagebaseurl = "support/content_editor/uploads/{$name}";

Wenn Sie doppelte Anführungszeichen verwenden, können Sie den obigen Text auch so schreiben:

$imagebaseurl = "support/content_editor/uploads/$name";

Es ist jedoch gut, sich an die Verwendung von {$...} in doppelten Anführungszeichen anstelle von nur $... für Fälle, in denen Sie eine Variable in eine Zeichenkette einfügen müssen, bei der es für PHP nicht offensichtlich ist, welcher Teil die Variable und welcher Teil die Zeichenkette ist.

Wenn Sie die beste Leistung wünschen, verwenden Sie die String-Verkettung mit einfachen Anführungszeichen.

-7voto

HumbleWebDev Punkte 495

Ich kann dem vorherigen Beitrag nur beipflichten.

Ich würde fast so weit gehen, es als schlechte Praxis zu bezeichnen, wenn man

$varname = 'EXAMPLE';

$fulltext = "This is an $varname";

Meiner Erfahrung nach ist es wartungsfreundlicher, einen guten Freund von mir, sprintf(), zu verwenden;

define('CONST_NAME', 'This is an example of a better %s');
define('EXAMPLE', sprintf(CONST_NAME, 'practice'));

echo EXAMPLE;

Warum? Das erste mag klarer erscheinen, aber das zweite ist viel besser wiederverwendbar. Ich empfehle die Verwendung von sprintf anstelle des magischen doppelten Anführungszeichens von php, das buchstäblich in keiner anderen Sprache existiert.

http://php.net/manual/en/function.sprintf.php

Dies ist auch die Praxis, die in C# und vielen anderen Sprachen verwendet wird.

Siehe auch: https://msdn.microsoft.com/en-us/library/system.string.format(v=vs.110).aspx

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