Mencampur variabel PHP dengan string literal

144

Katakanlah saya memiliki variabel $testdan itu didefinisikan sebagai:$test = 'cheese'

Saya ingin menghasilkan cheesey, yang dapat saya lakukan seperti ini:

echo $test . 'y'

Tetapi saya lebih suka menyederhanakan kode menjadi sesuatu yang lebih seperti ini (yang tidak akan berfungsi):

echo "$testy"

Apakah ada cara yagar diperlakukan seolah-olah terpisah dari variabel?

Matt McDonald
sumber
1
oleh yang $test = cheese;Anda maksudkan $test = 'cheese'; di akhir posting Anda (jika saya tidak salah) ...
Dieluarkan

Jawaban:

251
echo "{$test}y";

Anda dapat menggunakan tanda kurung untuk menghilangkan ambiguitas saat menginterpolasi variabel secara langsung dalam string.

Selain itu, ini tidak berfungsi dengan tanda kutip tunggal. Begitu:

echo '{$test}y';

akan mengeluarkan

{$test}y
alex
sumber
1
apakah mungkin juga untuk panggilan fungsi sebaris dengan metode seperti itu? Sesuatu yang mirip dengan"foo{implode(',', [abc])}bar"
velop
@ mengembangkan Nope. String bangunan sering kali dilakukan setelah pemrosesan terjadi. Memanggil fungsi di tengah-tengah menyiapkan output Anda sering kali tidak sesuai dengan keinginan Anda. Pertimbangkan untuk memanggil fungsi tersebut terlebih dahulu, menyimpan hasilnya dalam variabel dan kemudian Anda dapat memasukkannya ke dalam string echo "like so: $var";.
Jochem Kuijpers
bagaimana cara menanamkan operator terner yang mengevaluasi dua string berbeda dalam sebuah string?
oldboy
51

Anda dapat menggunakan {}variabel Anda, untuk memisahkannya dari variabel setelahnya:

echo "{$test}y"

Sebagai referensi, Anda dapat melihat bagian sintaks Penguraian Variabel - Kompleks (keriting) pada manual PHP.

Pascal MARTIN
sumber
Terima kasih. Saya mencoba membaca manual string tetapi tidak yakin persis apa yang saya cari untuk mencari apa yang saya cari.
Matt McDonald
2
Sama-sama :-) Ya, tidak selalu mudah untuk menemukan bagian yang tepat, ketika Anda tidak benar-benar tahu apa yang Anda cari ^^
Pascal MARTIN
Perlu dicatat bahwa setelah Anda berada di dalam {}, Anda bisa menggunakan ekspresi, tidak hanya nama variabel, seperti {$ x-> y [3]} atau apa pun.
TextGeek
4

Contoh:

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

Ini akan menampilkan:

murahan

Ini persis seperti yang Anda cari.

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

print $bucket;

hasil:

$node->mindd_2_study_status['und'][0]['value'] = $form_state['values']
['mindd_2_study_status']
earlyburg
sumber