Pertanyaan Mengapa printf () dalam PHP tidak berfungsi ketika saya menggunakan tanda kutip ganda?


printf("by %1$s on %2$s", 'string1', 'string2'); tidak berfungsi, sedangkan printf('by %1$s on %2$s', 'string1', 'string2'); tidak.

Sebenarnya saya sedang mendesain tema Wordpress, dan mengikuti tema asli dua puluh sangat erat. Yang aneh adalah, saya telah menggunakan tanda kutip ganda pada semua pernyataan printf () sebelumnya tanpa masalah apa pun.


5
2018-03-14 09:35


asal


Jawaban:


Karena ketika Anda menggunakan tanda kutip ganda $s diperlakukan sebagai variabel

Seperti dalam:

$x = "World";
echo "Hello $x"; // Will print: "Hello World

dimana ketika menggunakan:

$x = "World";
echo 'Hello $x'; // Will just print "Hello $x"

Untuk penjelasan lebih rinci, Anda dapat memeriksa manual:

String pada umumnya

Tunggal dikutip vs Kutip ganda


11
2018-03-14 09:37



Sangat penting untuk menyadari php memperlakukan string yang dikutip tunggal dan ganda dikutip berbeda.

Anda dapat membaca lebih lanjut di resmi dokumen php, tetapi izinkan saya memberi Anda sorotan:

$t = 'bla';
echo '$t';

akan menghasilkan $ t, di mana

$t = 'bla';
echo "$t";

akan menampilkan bla


3
2018-03-14 09:40



Itu karena Anda memiliki sedikit '$ s' di string Anda. Ketika menggunakan tanda kutip ganda, PHP menafsirkannya sebagai variabel dan mencoba menguraikannya. Anda mungkin menggunakan kutipan ganda tanpa $ di dalamnya tadi.


2
2018-03-14 09:39



Seperti jawaban yang lain katakan, itu memperlakukan $s sebagai variabel, Anda selalu bisa melarikan diri $

printf("by %1\$s on %2\$s", 'string1', 'string2');

Namun saya akan menggunakan tanda kutip tunggal, karena php tidak perlu mem-parsing string dan karena itu lebih cepat.


1
2018-03-14 10:34