PHP変数と文字列リテラルの混合


140

たとえば、変数が$testあり、次のように定義されているとします。$test = 'cheese'

cheeseyは次のようにして出力できます:

echo $test . 'y'

しかし、私はコードをこのようなものに単純化することを好みます(これは機能しません):

echo "$testy"

y変数から分離されているかのように扱われる方法はありますか?


1
$test = cheese;あなたが意味$test = 'cheese'; (私は間違っていないよ場合)最後にあなたのポストを...
追放

回答:


242
echo "{$test}y";

中括弧を使用して、文字列内で変数を直接補間するときのあいまいさを取り除くことができます。

また、これは単一引用符では機能しません。そう:

echo '{$test}y';

出力されます

{$test}y

1
そのようなメソッドで関数呼び出しをインライン化することも可能ですか?類似のもの"foo{implode(',', [abc])}bar"
ベロップ2017

@velopいいえ。文字列の構築は、多くの場合、処理が行われた後に行われます。出力を準備している最中に関数を呼び出すと、たいていは望みどおりに動作しません。最初に関数を呼び出して結果を変数に格納し、それを文字列に含めることを検討してくださいecho "like so: $var";
Jochem Kuijpers、2018

文字列内の2つの差分文字列に評価される三項演算子を埋め込む方法
oldboy

50

{}変数をarroundで使用して、その後のものから分離することができます。

echo "{$test}y"

参考として、PHPマニュアルの「変数の解析-複雑な(カーリー)構文」セクションをご覧ください。


ありがとう。文字列のマニュアルを読んでみましたが、探していたものが正確にわからなかったので、自分が探していたものを探しました。
Matt McDonald、

2
どういたしまして:-)ええ、あなたが探しているものが本当にわからないとき、正しいセクションを見つけるのは必ずしも簡単ではありません^^
Pascal MARTIN

{}の内部に入ると、{$ x-> y [3]}などの変数名だけでなく、式を使用できることに注意してください。
TextGeek

3

例:

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

それは出力します:

安っぽい

それはまさにあなたが探しているものです。


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

print $bucket;

収量:

$node->mindd_2_study_status['und'][0]['value'] = $form_state['values']
['mindd_2_study_status']
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.