Perbedaan antara kutipan ganda dan tunggal dalam PHP. Kutipan PHP, Kutipan tunggal, ganda, perisai Apa variabel dalam kutipan PHP tunggal

Baris dalam PHP dibingkai oleh kutipan tunggal atau ganda. Perbedaan utama adalah bahwa dalam kutipan ganda dapat diganti dengan variabel:

Sekarang kita dapat menemukan solusi lain untuk tugas variabel pelajaran dalam PHP:

$ title."; Gema"

$ Konten
"; ?>

Bagaimana PHP menemukan variabel dalam string?

Semuanya sederhana. Ingat karakter apa yang dapat digunakan dalam nama variabel? Ini adalah angka, huruf dan menekankan _.

Berikut ini PHP dan menerima nama semuanya antara $ simbol dan simbol terlarang pertama.

Dalam kode PHP berikut, itu akan salah menentukan nama variabel dan memberikan kesalahan:

Hasil di browser:

PEMBERITAHUAN: Variabel tidak ditentukan: Price di D: \\ OpenServer \\ Domains \\ Situs \\ index.php on line 3

Untuk PHP dengan benar menentukan nama variabel dalam string, Anda perlu menempatkannya dalam kurung keriting ():

Hasil di browser:

1499rub.

Tidak ada pendapat yang tidak ambigu, kutipan apa yang perlu digunakan untuk garis biasa di mana tidak ada yang perlu diganti. Namun, banyak programmer lebih suka menggunakan kutipan tunggal.

Faktanya adalah bahwa kutipan ganda dari banyak hal menyebabkan asosiasi "ke garis ini harus menggantikan sesuatu." Oleh karena itu, saya sarankan menggunakan tanda kutip tunggal untuk teks biasa, dan hanya dua kali ketika Anda perlu mengganti variabel dalam teks. Contoh:

Kutipan perisai

Jika Anda perlu menempatkan tanda kutip di dalam string, ada 2 cara untuk melakukannya:

Pada contoh kedua, lapisan terbalik \\ melindungi kutipan selanjutnya setelah itu sehingga PHP menganggapnya sebagai string.

Menurut Anda apa yang perlu Anda lakukan untuk hanya menampilkan garis miring terbalik? Lagi pula, itu akan melindungi kutipan penutupan. Ini lucu, tetapi Anda perlu menulis tebasan kedua untuk melindungi yang pertama:

Tabulasi dan transfer string dalam kutipan ganda

Lapisan terbalik dalam kutipan ganda memungkinkan Anda untuk melindungi tidak hanya kutipan dan diri Anda sendiri, tetapi juga beberapa karakter lain. Yang paling populer dari mereka adalah tab (ruang panjang yang Anda dapatkan ketika Anda menekan tab) dan transfer string. Mereka terlihat seperti ini:

Tulis skrip itu:
1. Membuat variabel jenis $ dengan nilai game.
2. Membuat nama Variabel $ dengan nilai "World of Warcraft" (dengan kutipan).
3. Menampilkan kedua variabel di dalam tag

. Harus ada ruang antara variabel.

Saya bukan ahli dalam pemrograman PHP, tapi saya agak bingung mengapa saya melihat beberapa kode dalam PHP dengan string yang ditempatkan dalam kutipan tunggal, dan kadang-kadang dalam kutipan ganda.

Saya hanya tahu bahasa dokter hewan atau C, jika dalam satu gempa, itu berarti bahwa ini adalah simbol, bukan string.

11 Responses.

apa yang perlu Anda ketahui

$ A \u003d "Nama"; $ B \u003d "$ a saya"; \u003d\u003d "nama saya" $ c \u003d "$ A"; ! \u003d "Nama saya"

dalam PHP, orang menggunakan satu kutipan untuk mendefinisikan string konstan, misalnya "A", "nama saya", "abc xyz", ketika menggunakan kutipan ganda untuk menentukan garis, berisi pengidentifikasi, misalnya "$ B $ C $ D ".

Echo "namaku";

lebih cepat dari

Echo "namaku";

Echo "my". $ a;

lebih lambat dari

Gema "$ a";

ini berlaku untuk baris lain yang digunakan.

contoh kutipan tunggal, ganda, heredok dan noowdoc

kedua jenis karakter bersarang adalah baris. Salah satu jenis kutipan digunakan untuk menyimpulkan jenis kutipan yang berbeda. "" "dan" ". Perbedaan terbesar antara jenis kutipan adalah bahwa referensi untuk pengidentifikasi bersarang diganti di dalam kutipan ganda, tetapi tidak di dalam tanda kutip tunggal.

dalam PHP, teks kutipan yang sama dianggap sebagai nilai string, dan teks kutipan ganda akan menganalisis variabel, mengganti dan memproses nilainya.

$ test \u003d "variabel"; Echo "Hello Mr $ Test"; // output akan: halo mr variable echo "hello mr $ test"; // output akan: Halo Mr $ Uji

di sini, kutipan ganda menganalisis nilai, dan kutipan tunggal dianggap sebagai nilai string (tanpa mem-parsing variabel tes $.)

mungkin saya sedikit terlambat, dan sedikit dari topik, tapi masih ...

anda tidak perlu memilih karena isi baris Anda antara:
Peringatan ("Ini" "permainan \\" "); atau waspada (" ini "permainan" ");

sebaliknya, Anda dapat memasukkan seperti ini, dan kemudian menggunakan kutipan ganda atau tunggal, karena tidak masalah:
Peringatan ("itu" waktu "permainan"); dan waspada ("itu" permainan "" ");

$ Name \u003d "Tes"; $ Singlequote \u003d "Ini adalah contoh untuk $ kutipan tunggal"; // di sini variabel nama $ tidak mengevaluasi echo $ singlequote; // output: Ini adalah contoh untuk kutipan tunggal $ nama $ singlequote \u003d "Ini adalah contoh untuk kutipan tunggal $ nama"; // di sini $ variabel nama akan mengevaluasi dan mengganti nilai variabel echo $ singlequote; // output: Ini adalah contoh untuk uji kutipan tunggal juga di dalam evaluasi kutipan yang lebih cepat untuk berkumpul dua kali lipat

satu:

sangat penting untuk dicatat bahwa string dengan pengidentifikasi penutupan bantuan disini. harus mengandung karakter lain kecuali titik koma (;). Ini berarti bahwa pengidentifikasi tidak mungkin mundurdan tidak bisa tempat atau tab. sebelum atau sesudah koma.

contoh:

$ Str \u003d.<<

Kutipan apa yang digunakan untuk merancang string - apostrof atau kutipan ganda klasik?

Mari kita menganalisis perbedaan antara kutipan ganda dan tunggal dalam PHP, dan pada contoh, cari tahu kapan Anda perlu menggunakannya.

Variabel dan urutan perisai untuk karakter khusus yang dihadapi dalam baris yang terlampir dalam kutipan tunggal tidak diproses. Garis yang dibingkai oleh apostrof diproses oleh penerjemah PHP jauh lebih cepat daripada garis-garis serupa yang dikelilingi oleh kutipan ganda.

Alasan di sini sederhana: garis-garis dalam penawaran penawaran kutipan ganda juga memeriksa variabel dan jika ini terletak, maka alih-alih nama variabel dalam string menyisipkan nilainya. Tetapi string yang diakhiri dengan apostrof dipersepsikan oleh penerjemah sebagai teks biasa dan tidak ada transformasi dalam saluran PHP ini tidak melakukan. Saya pikir jelas bahwa pemrosesan garis dalam kutipan tunggal dalam kasus apa pun akan terjadi lebih cepat.

Untuk mulai dengan, kami jelaskan cara menentukan string, dan kemudian periksa seberapa cepat baris dalam kutipan tunggal akan terjadi.

Cara termudah untuk menentukan string adalah untuk menyimpulkannya menjadi tanda kutip tunggal ("). Untuk menggunakan tanda kutip tunggal di dalam string terlampir dalam kutipan tunggal, mereka perlu berada di depan simbol deficent (\\) terbalik, yang terlindung. Jika wastafel balik harus pergi sebelum satu kutipan atau berada di akhir baris, Anda perlu menduplikasinya. Jika Anda mencoba untuk melindungi karakter lain, fitur Reverse Sinking juga akan dicetak.

Kami memberikan contoh menggunakan tanda kutip tunggal:
// Hapus: String Sederhana
gema "baris sederhana";
// menghapus: Saya di sini
echo "i \\" m di sini ";
// akan keluar: itu tidak akan menyisipkan: \\ n string baru
echo "itu tidak akan menyisipkan: \\ n string baru";
// akan keluar: variabel sampel $ juga tidak akan menggantikan
echo "$ contoh variabel tidak akan menggantikan"; Jika string tertutup dalam kutipan ganda ("), PHP mengakui lebih banyak urutan kontrol untuk karakter khusus dan juga pengganti bukan nama variabel dalam string nilainya. Sama seperti dengan kutipan tunggal, untuk menggunakan tanda kutip ganda di dalam string disimpulkan. Dalam kutipan ganda, mereka harus maju dengan simbol kepang terbalik (\\).

Mari kita beri contoh penggunaan kutipan ganda:
// Hapus: String Sederhana
gema "baris sederhana";
// akan keluar: Perusahaan "Snowdrop" "
echo "perusahaan \\" snowdrophry \\ "";
// akan keluar: itu akan menerjemahkan ke string baru
echo "itu akan menerjemahkan ke baris baru \\ n";
// akan keluar: variabel akan menggantikan
$ contoh \u003d "substitut";
echo "variabel $ contoh"; Harus juga diingat bahwa urutan "\\ n" (baris baru), "\\ r" (kembali kereta) untuk teks biasa, dan bukan untuk HTML. Jadi di browser Anda tidak akan melihat perubahan (hanya di halaman sumber halaman).

Mari cari tahu seberapa cepat dari kutipan tunggal ganda. Untuk pengukuran, tulis skrip uji pendek, dan segera perhatikan bahwa jika Anda memilikinya untuk mengujinya, hasil yang tergantung pada perangkat keras PC atau server Anda akan berbeda.
// kembalikan cap waktu di awal siklus
$ Mulai \u003d Microtime (Benar);
// buat siklus siklus untuk 1 juta iterasi
untuk ($ i \u003d 0; $ i< 1000000; $i++) {
$ Text \u003d "Ini adalah string simbol";
}
// hitung waktu yang dihabiskan
$ Time \u003d (mikrotime (benar) - $ start); Hasil: 0,09 detik.

Jika kita mengganti kutipan tunggal pada ganda:
$ Text \u003d "Ini adalah string simbol"; Hasilnya akan sama dengan 0,10 detik.

Seperti yang kita lihat, saat menggunakan garis teks, perbedaan waktu eksekusi sangat kecil, bahkan dapat dikatakan dan tidak ada sama sekali. Yang paling menarik akan dimulai ketika kami mencoba menggabungkan string dan variabel.
$ Text \u003d "Ini adalah garis simbol $ I"; atau
$ Text \u003d $ i. "Ini adalah string simbolis"; Hasilnya kira-kira: 0,27 detik.

Perbedaannya sangat sensitif. Gabungan dan kutipan ganda dengan jelas mempengaruhi kecepatan jika variabel ditambahkan ke string.

Ketika server memproses kode, ia memeriksa semua isi kutipan ganda untuk variabel, konstanta dan lainnya. Ini membutuhkan waktu. Dan fakta bahwa ada antara kutipan tunggal proses server sebagai teks jadi dan tidak peduli apa yang terletak di sana. Perbedaan antara kecepatan kutipan tunggal dan ganda sangat tidak signifikan, tetapi jika Anda mengembangkan proyek yang sangat dimuat, milidetik yang disimpan sudah menjadi kemenangan.

Nilai string adalah string teks (baris sebentar). String adalah urutan nol atau lebih karakter. Simbol termasuk huruf, angka, tanda baca, karakter dan spasi khusus.

String dapat ditentukan oleh empat cara berbeda:

  • kutipan ganda
  • kutipan tunggal
  • heredoc-sintaks
  • sintaks sekarangdoc.

Baris dalam kutipan ganda

Baris dalam kutipan ganda:

Urutan kontrol dapat digunakan dalam jalur kutipan ganda. Urutan kontrol. - Ini adalah karakter khusus yang dirancang untuk memformat output teks. Urutan kontrol berikut tersedia di PHP:

Properti utama dari baris dalam kutipan ganda adalah kemampuan untuk memproses variabel di dalam baris.


Tanda dolar: \\ $ ";

Baris menyimpulkan dalam tanda kutip ganda mungkin berisi karakter kutipan tunggal:

Echo "kutipan tunggal:" ";

Baris dalam kutipan tunggal (apostrof)

String dalam kutipan tunggal:

$ str \u003d "string"; Gema "satu garis besar dapat dipecah menjadi beberapa garis kecil sehingga lebih mudah dibaca.";

Tidak seperti garis dalam kutipan ganda dan sintaks Heredoc, variabel dan urutan kontrol (untuk satu pengecualian), terlampir dalam kutipan tunggal tidak diproses. Ini berarti bahwa mereka akan ditafsirkan sebagai karakter string konvensional:

$ num \u003d 10; Echo "Nomor: $ num
Tanda dolar: \\ $ ";

Ke garis tertutup dalam kutipan tunggal, seseorang dapat menggunakan kutipan tunggal, Anda harus terlindung menggunakan garis miring terbalik (\\ "). Jika Anda perlu menulis garis miring terbalik, Anda perlu menduplikasi (\\\\):

Echo "di dalam digunakan \\" single \\ "kutipan"; Echo "Reverse Slash: \\\\";

Baris menyimpulkan dalam tanda kutip tunggal dapat berisi karakter kutipan ganda:

Echo "kutipan ganda:" ";

Heredoc-sintaks

SINOC-Syntax adalah cara alternatif untuk merekam baris.

String ditentukan menggunakan karya Sintaks Heredoc serta string yang terletak di kutipan ganda. Perbedaan antara heredoc dan baris dalam kutipan ganda adalah bahwa menggunakan hereditoc tidak perlu melindungi kutipan ganda.

Heredoc-sintaks dimulai dengan tiga karakter<<< , после которых должен быть указан произвольный идентификатор (назовём его открывающим). Идентификатор может быть указан как в двойных кавычках, так и без них. Segera Setelah pengidentifikasi, terjemahan harus ditransfer ke string baru, tidak ada karakter lain selain terjemahan ke string baru setelah pengidentifikasi tidak boleh, jika tidak, kesalahan akan terjadi. Selanjutnya, itu langsung merangkai konten. Setelah konten string, pada baris terpisah, pengenal penutup harus ditentukan (sama seperti setelahnya<<<). Перед ним и после него не должно быть никаких пробелов или других символов, за исключением точки с запятой. Если это правило нарушено, то считается, что закрывающий идентификатор отсутствует и будет вызвана ошибка:

<<

Nowdoc-sintaks

Nowdoc-sintaks serta Heredoc adalah cara alternatif untuk merekam baris.

String yang ditentukan menggunakan Sintaksis Sintaks Nowdoc serta string yang terletak di kutipan tunggal. Perbedaan antara NowDoc dan string dalam tanda kutip tunggal adalah menggunakan NowDoc tidak perlu melindungi tanda kutip tunggal.

Sintaksis Nowdoc mirip dengan HEREDOC dengan perbedaan yang harus dilampirkan dalam tanda kutip tunggal:

$ num \u003d 10; Gema.<<<"some_id" Число: $num some_id;

Variabel pemrosesan dalam baris

Ada dua jenis sintaks pemrosesan variabel dalam baris: polos dan rumit.

Sintaks Sederhana - Ini adalah saat nama variabel ditentukan dalam string apa adanya.

Ketika penerjemah memenuhi tanda dolar, itu mulai secara berurutan memeriksa apakah semua karakter selanjutnya adalah karakter yang valid dalam nama variabel. Dengan demikian, untuk membentuk nama variabel yang benar, ia menangkap begitu banyak karakter mungkin:

$ Str \u003d "dunia!"; Echo "Hello $ str";

Sintaks kompleks. - Ini adalah saat nama variabel terletak pada kurung keriting.

Sejak, untuk memproses variabel dalam string, penerjemah menangkap begitu banyak karakter, sebanyak mungkin ketika penerjemah tidak dapat menentukan secara independen di mana nama variabel berakhir:

$ Sport1 \u003d "akan"; $ Sport2 \u003d "kaki"; Echo "Saya suka $ sport1ball dan $ sport2ball";

Dalam hal ini, hasil yang diinginkan tidak akan tercapai, karena penerjemah akan menghitung $ sport1 sebagai bagian dari nama variabel $ Sport1ball, yang tidak ada.

Untuk secara eksplisit menentukan penerjemah di mana nama variabel berakhir, perlu memasukkan nama variabel dalam tanda kurung keriting:

$ Sport1 \u003d "akan"; $ Sport2 \u003d "kaki"; Echo "Saya suka ($ sport1) bol dan ($ sport2) bol.";

Tanda dolar dapat ditemukan baik di depan brace dan setelah itu:

$ Sport1 \u003d "akan"; $ Sport2 \u003d "kaki"; Echo "Saya suka $ (sport1) bol dan ($ sport2) bol.";

Rangkaian

Gabungan adalah kombinasi dua atau lebih baris dalam satu yang besar. Kombinasi terjadi menggunakan operator gabungan -. (titik). Saat gabungan, setiap string berikutnya ditambahkan ke akhir yang sebelumnya:

Nilai jenis apa pun yang dikombinasikan dengan string akan secara implisit dikonversi ke string dan kemudian gabungan akan dibuat:

"; Echo" Nomor: ". 1;?\u003e

Saya bukan ahli dalam pemrograman pada PHP, tetapi saya sedikit membingungkan saya, mengapa saya melihat beberapa kode dalam PHP dengan string menyimpulkan dalam single, dan kadang-kadang dalam kutipan ganda.

Saya hanya tahu bahwa V.NET atau C Bahasa, jika dalam tanda kutip tunggal, itu berarti bahwa ini adalah simbol, bukan string.

Keputusan

Apa yang perlu Anda ketahui

$ A \u003d "Nama"; $ B \u003d "$ a saya"; \u003d\u003d "nama saya" $ c \u003d "$ A"; ! \u003d "Nama saya"

Di PHP, orang menggunakan kutipan tunggal untuk menentukan string konstan, misalnya "A", "nama saya", "ABC XYZ" saat menggunakan kutipan ganda untuk menentukan string yang berisi pengidentifikasi, seperti "A $ B $ c $ d ",

Dan hal lainnya,

Echo "namaku";

lebih cepat dari

Echo "namaku";

Echo "my". $ a;

lebih lambat dari

Gema "$ a";

Ini berlaku untuk baris lain yang digunakan.

Dalam PHP, teks dalam kutipan tunggal dianggap sebagai nilai string, dan teks dalam kutipan ganda akan menganalisis variabel dengan mengganti dan memproses nilainya.

$ test \u003d "variabel"; Echo "Hello Mr $ Test"; // output akan: halo mr variable echo "hello mr $ test"; // output akan: Halo Mr $ Uji

Di sini, kutipan ganda menganalisis nilai, dan kutipan tunggal dianggap sebagai nilai string (tanpa mem-parsing variabel tes $.)

Kedua jenis karakter bersarang adalah baris. Salah satu jenis kutipan nyaman digunakan untuk kesimpulan dari jenis kutipan lain. "" "Dan juga" "", perbedaan terbesar antara jenis kutipan adalah bahwa referensi untuk pengidentifikasi bersarang diganti di dalam kutipan ganda, dan tidak di dalam tanda kutip tunggal.