Mischen einer PHP-Variablen mit einem String-Literal


140

Angenommen, ich habe eine Variable $testund sie ist definiert als:$test = 'cheese'

Ich möchte ausgeben cheesey, was ich so machen kann:

echo $test . 'y'

Aber ich würde es vorziehen, den Code auf etwas Ähnliches zu vereinfachen (was nicht funktionieren würde):

echo "$testy"

Gibt es eine Möglichkeit, das so yzu behandeln, als wäre es von der Variablen getrennt?


1
von $test = cheese;dir meinte $test = 'cheese'; am Ende deinen Beitrag (wenn ich mich nicht irre) ...
Ausgestoßener

Antworten:


242
echo "{$test}y";

Sie können geschweifte Klammern verwenden, um Mehrdeutigkeiten zu beseitigen, wenn Sie Variablen direkt in Zeichenfolgen interpolieren.

Dies funktioniert auch nicht mit einfachen Anführungszeichen. So:

echo '{$test}y';

wird ausgegeben

{$test}y

1
Ist es mit einer solchen Methode auch möglich, Funktionsaufrufe inline zu machen? Etwas ähnliches wie"foo{implode(',', [abc])}bar"
Velop

@velop Nein. Das Erstellen von Zeichenfolgen erfolgt häufig nach der Verarbeitung. Das Aufrufen von Funktionen während der Vorbereitung Ihrer Ausgabe ist oft nicht das, was Sie wollen. Rufen Sie zuerst die Funktion auf, speichern Sie das Ergebnis in einer Variablen und fügen Sie es dann in die Zeichenfolge ein echo "like so: $var";.
Jochem Kuijpers

Wie kann man einen ternären Operator einbetten, der zwei verschiedene Zeichenfolgen in eine Zeichenfolge auswertet?
Oldboy

50

Sie können um {}Ihre Variable herum verwenden, um sie von den folgenden zu trennen:

echo "{$test}y"

Als Referenz können Sie den Abschnitt Variable Parsing - Komplexe (geschweifte) Syntax des PHP-Handbuchs lesen.


Vielen Dank. Ich habe versucht, das String-Handbuch zu lesen, war mir aber nicht sicher, wonach ich suchte, um nach dem zu suchen, wonach ich suchte.
Matt McDonald


Beachten Sie, dass Sie, sobald Sie sich in {} befinden, Ausdrücke verwenden können, nicht nur Variablennamen wie {$ x-> y [3]} oder was auch immer.
TextGeek

3

Beispiel:

$test = "chees";
"${test}y";

Es wird ausgegeben:

käsig

Es ist genau das, wonach Sie suchen.


-3
$bucket = '$node->' . $fieldname . "['und'][0]['value'] = " . '$form_state' . "['values']['" . $fieldname . "']";

print $bucket;

Ausbeuten:

$node->mindd_2_study_status['und'][0]['value'] = $form_state['values']
['mindd_2_study_status']
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.