Saya bertanya-tanya, Apa cara yang tepat untuk memasukkan variabel PHP ke dalam string?
Cara ini:
echo "Welcome ".$name."!"
Atau dengan cara ini:
echo "Welcome $name!"
Kedua metode ini berfungsi di blog saya PHP v5.3.5
. Yang terakhir lebih pendek dan lebih sederhana tapi saya tidak yakin apakah yang pertama lebih baik memformat atau diterima sebagai lebih tepat.
php
string
variables
concatenation
Desainer web
sumber
sumber
echo 'Welcome '.$name.'!';
Jawaban:
Di antara kedua sintaks tersebut, Anda harus benar-benar memilih yang Anda sukai :-)
Secara pribadi, saya akan pergi dengan solusi kedua Anda dalam kasus seperti itu (interpolasi variabel) , yang saya temukan lebih mudah untuk menulis dan membaca.
Hasilnya akan sama; dan bahkan jika ada implikasi kinerja, itu tidak masalah 1 .
Sebagai seorang sidenote, maka jawaban saya sedikit lebih lengkap: hari Anda ingin melakukan sesuatu seperti ini:
PHP akan menafsirkan kode Anda seolah-olah Anda sedang mencoba menggunakan
$names
variabel - yang tidak ada. - perhatikan bahwa itu hanya akan bekerja jika Anda menggunakan "" bukan untuk string Anda.Hari itu, Anda harus menggunakan
{}
:Tidak perlu mundur ke concatenations.
Perhatikan juga bahwa sintaks pertama Anda:
Mungkin dapat dioptimalkan , menghindari penggabungan, menggunakan:
(Tapi, seperti yang saya katakan sebelumnya, ini tidak masalah banyak ...)
1 - Kecuali jika Anda melakukan ratusan ribu rangkaian vs interpolasi - dan itu mungkin tidak sepenuhnya benar.
sumber
{}
.echo
, tidak di tempat lain.time php -r '$string=""; for ($i=0;$i<199999;$i++){ $string = $string.$i; } print("Done!\n");'
(Rangkaian) sebenarnya kehilangan sekitar 300 milidetik (untuk 200.000 item, itu 1 milidetik per seribu elemen pada set Anda ...). Itu kebisingan statistik, bahkan tidak mungkin mengukur perbedaan apa pun. Mengingat itu lebih mudah dibaca,time php -r '$string=""; for ($i=0;$i<199999;$i++){ $string = "{$string}{$i}"; } print("Done!\n");'
(Interpolasi) adalah pemenang yang tak perlu ...String yang dikutip ganda lebih elegan karena Anda tidak perlu memecah string Anda setiap kali Anda perlu memasukkan variabel (seperti yang harus Anda lakukan dengan string yang dikutip satu kali).
Namun, jika Anda harus memasukkan nilai balik suatu fungsi, ini tidak dapat dimasukkan ke dalam string yang dikutip ganda - bahkan jika Anda mengelilinginya dengan kawat gigi!
sumber
$x = function() { ...}; $string = "hello {$x(blah blah blah)}"
, yang bekerja di sekitar "pembatasan".$x = 'trim'; $string = "hello {$x('blah blah blah')}";
$s = 'Hello ' . trim($world) .'!';
Coba gunakan tanda kutip tunggal ketika tidak ada yang interpolasi dalam string. Ini akan meningkatkan kinerja dan dapat digunakan sebagai konvensi untuk mengidentifikasi keduanyaSejak php4 Anda dapat menggunakan pemformat string:
Sumber: sprintf ()
sumber
Tidak ada yang baik. Gunakan yang memiliki visibilitas lebih baik untuk Anda. Dan berbicara tentang visibilitas Anda juga dapat melihat printf .
sumber
Dari sudut pandang membuat berfikir sederhana , mudah dibaca , konsisten , dan mudah dipahami (karena kinerja tidak penting di sini):
Menggunakan vars tertanam dalam tanda kutip ganda dapat menyebabkan situasi yang rumit dan membingungkan ketika Anda ingin menanamkan properti objek, array multidimensi, dll. Artinya, umumnya ketika membaca vars tertanam, Anda tidak dapat secara instan 100% yakin dengan perilaku akhir dari apa yang Anda baca .
Anda sering perlu menambahkan kruk seperti
{}
dan\
, yang menambahkan kebingungan IMO dan membuat pembacaan concatenation hampir setara, jika tidak lebih baik.Segera setelah Anda perlu membungkus panggilan fungsi di sekitar var, misalnya
htmlspecialchars($var)
, Anda harus beralih ke penggabungan.AFAIK, Anda tidak dapat menanamkan konstanta.
Dalam beberapa kasus tertentu, "tanda kutip ganda dengan embel-embel vars" bisa berguna, tetapi secara umum, saya akan melakukan penggabungan (menggunakan tanda kutip tunggal atau ganda saat nyaman)
sumber
Saya tahu pertanyaan ini sudah memiliki jawaban yang dipilih, tetapi saya menemukan artikel ini yang jelas menunjukkan bahwa interpolasi string bekerja lebih cepat daripada penggabungan. Mungkin bermanfaat bagi mereka yang masih ragu.
sumber
Pergilah dengan yang pertama dan gunakan satu tanda kutip!
Satu-satunya situasi ketika Anda harus menggunakan tanda kutip ganda, adalah ketika Anda butuhkan
\r
,\n
,\t
! Overhead tidak layak untuk digunakan dalam kasus lain.Anda juga harus memeriksa rangkaian variabel PHP , phpbench.com untuk beberapa tolok ukur pada berbagai metode dalam melakukan sesuatu.
sumber
\r
,\n
dan\t
karena jawaban lain tidak termasuk bagian ini.Itu hanya masalah selera.
Gunakan apa pun yang Anda inginkan.
Sebagian besar waktu saya menggunakan yang kedua tetapi tergantung.
Izinkan saya menyarankan Anda juga untuk mendapatkan editor yang baik yang akan menyoroti variabel di dalam string
sumber
Jangan digabungkan. Tidak diperlukan, kami koma karena gema dapat mengambil beberapa parameter
Mengenai menggunakan tanda kutip tunggal atau ganda perbedaannya dapat diabaikan, Anda dapat melakukan tes dengan sejumlah besar string untuk menguji sendiri.
sumber
Anda harus memilih yang pertama. Mereka tidak memiliki perbedaan kecuali kinerja yang pertama akan menjadi cepat dibandingkan yang kedua.
Jika variabel di dalam PHP kutipan ganda membutuhkan waktu untuk mem-parsing variabel.
Lihat Kutipan Tunggal atau Kutipan Ganda ini untuk penggabungan variabel?
Ini adalah contoh lain Apakah ada manfaat kinerja kutipan tunggal vs kutipan ganda di php?
Saya tidak mengerti mengapa jawaban di tautan di atas terangkat dan mengapa jawaban ini diturunkan.
Seperti yang saya katakan hal yang sama.
Anda dapat melihat di sini juga
Apa yang lebih cepat di PHP, kutipan tunggal atau ganda?
sumber
Jika Anda ingin menjalankan
SQL
perintah dan variabel Anda adalah anggota array, maka Anda tidak boleh menggunakan tanda kutip tunggal di dalam[]
array (seperti ini['']
:); misalnya jika Anda menggunakan string ini sebagai perintah SQL, Anda mendapatkanserver error 500
:String yang benar adalah:
sumber
Saya tahu ini adalah pertanyaan lama, tetapi saya pikir seseorang harus menyebutkan semua pro & kontra:
Sintaks yang lebih baik : Itu preferensi pribadi.
Performa : Tidak ada perbedaan. Seperti banyak disebutkan, double-quote mungkin lebih cepat jika menggunakan banyak variabel yang tidak realistis.
Penggunaan yang Lebih Baik : Kutipan tunggal (kebanyakan). Seperti @Khez mengatakan, dengan kutip tunggal Anda dapat menggabungkan apa-apa, fungsi panggilan bahkan dan variabel modifikasi, seperti:
echo 'hi ' . trim($name) . ($i + 1);
. Satu-satunya hal double-quote bisa melakukan itu satu-kutipan tidak bisa lakukan adalah penggunaan\n
,\r
,\t
dan sama.Keterbacaan : Tidak ada perbedaan (semoga preferensi pribadi berlaku).
Writability / Re-Writability / Debugging : Dalam pernyataan 1-baris tidak ada perbedaan, tetapi ketika berhadapan dengan banyak baris, lebih mudah untuk mengomentari / menghapus baris komentar saat debugging atau menulis. Sebagai contoh:
Less Escaping : Kutipan tunggal. Untuk kutipan tunggal, Anda hanya perlu melepaskan 2 karakter (
'
dan\
). Untuk kutipan ganda, Anda perlu melepaskan 2 karakter ("
,\
) dan 3 lagi jika diperlukan ($
,{
dan}
).Dikurangi Perubahan : Kutipan tunggal. Misalnya jika Anda memiliki kode berikut:
Dan Anda harus menambah 1 hingga $ i, sehingga menjadi suka:
Tetapi untuk penawaran ganda, Anda harus mengubah ini:
untuk ini:
Kesimpulan : Gunakan apa yang Anda inginkan .
sumber