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?


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

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.


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.


-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']
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.