Dalam PHP, apakah perbezaan antara rentetan petikan tunggal dan berganda?
P粉604507867
P粉604507867 2023-08-18 11:45:01
0
2
673
<p>Saya agak keliru mengapa dalam PHP beberapa rentetan dalam kod menggunakan petikan tunggal dan beberapa menggunakan petikan berganda. </p> <p>Saya hanya tahu bahawa dalam .NET atau C, jika anda menggunakan petikan tunggal, itu bermakna ia adalah aksara, bukan rentetan. </p>
P粉604507867
P粉604507867

membalas semua(2)
P粉311089279

Kandungan dalam petikan berganda akan dihuraikan, tetapi kandungan dalam petikan tunggal tidak akan dihuraikan:

$s = "dollars";
echo 'This costs a lot of $s.'; // This costs a lot of $s.
echo "This costs a lot of $s."; // This costs a lot of dollars.
P粉741678385

Rentetan PHP boleh dinyatakan bukan sahaja dalam duacara, tetapi juga dalam empatcara.

  1. Rentetan petikan tunggal dipaparkan hampir sama seperti sedia ada. Pembolehubah dan kebanyakan jujukan pelarian tidak ditafsirkan. Pengecualian ialah untuk memaparkan petikan tunggal, ia boleh dilepaskan dengan segaris ke belakang '进行转义,要显示一个反斜杠,可以用另一个反斜杠\ ( jadi ya, rentetan petikan tunggal pun akan dihuraikan ).
  2. Rentetan petikan berganda akan memaparkan satu siri urutan pelarian (termasuk beberapa ungkapan biasa) dan pembolehubah dalam rentetan akan dinilai. Perkara penting ialah anda boleh menggunakan pendakap kerinting untuk mengasingkan nama pembolehubah yang nilainya diperlukan . Sebagai contoh, katakan anda mempunyai pembolehubah $type,你想要echo "The $types are"。这将查找变量$types。要解决这个问题,使用echo "The {$type}s are". Lihat String Parsing untuk mengetahui cara menggunakan pembolehubah tatasusunan dan banyak lagi.
  3. HeredocSintaks rentetan adalah serupa dengan rentetan petikan berganda. Ia bermula dengan <<<. Selepas operator ini, berikan pengecam, diikuti dengan aksara baris baharu. Kemudian rentetan itu sendiri, dan pengecam yang sama digunakan sekali lagi untuk menutup rujukan. Dalam sintaks ini, anda tidak perlu melepaskan petikan.
  4. Nowdoc (sejak PHP 5.3.0) Sintaks rentetan pada asasnya sama dengan rentetan petikan tunggal. Perbezaannya ialah anda tidak perlu melepaskan petikan tunggal atau garis miring ke belakang. Nowdoc menggunakan jujukan <<<序列来标识,但后面的标识符用单引号括起来,例如<<<'EOT' yang sama seperti heredoc, tetapi pengecam berikutnya disertakan dalam petikan tunggal, seperti <<<'EOT'. Tiada penghuraian dalam Nowdoc.

Nota: Petikan tunggal dalam petikan tunggal dan petikan berganda dalam petikan berganda mesti dilepaskan:

$string = 'He said "What\'s up?"';
$string = "He said \"What's up?\"";

Kelajuan:
Tiada perbezaan.
Sila baca artikel yang dipercayai daripada pembangun teras PHP. Apabila bercakap tentang ujian, kita tidak boleh mengambil mudah. Adalah penting untuk memahami bahawa menulis ujian yang boleh dipercayai dan mentafsir keputusannya memerlukan banyak pengetahuan dan pengalaman. Ini bermakna kebanyakan ujian adalah palsu. Contohnya, dalam kod seperti ini

for($i=0;$i<100000;$i++) {
    'string';
}

Rentetan yang dipetik dihuraikan sekali sahaja, bersama-sama dengan keseluruhan skrip, dan kemudian ditukar kepada opcode. Kemudian lakukan sejuta kali. Oleh itu, apa yang diukur bukan menghurai. Ini hanyalah puncak gunung ais. Dengan penanda aras nano seperti ini, hampir mustahil untuk mencipta ujian yang boleh dipercayai yang tidak akan dicemari oleh beberapa kesan sampingan yang mengganggu.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan