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?

Matt McDonald
quelle
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
Alex
quelle
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.

Pascal MARTIN
quelle
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
2
Pascal MARTIN
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.

Rizwan
quelle
-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']
Earlyburg
quelle