Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mengapakah PHP Membenarkan Interpolasi Langsung Elemen Tatasusunan Bersekutu dalam Rentetan Petikan Dua Kali?

Mengapakah PHP Membenarkan Interpolasi Langsung Elemen Tatasusunan Bersekutu dalam Rentetan Petikan Dua Kali?

Linda Hamilton
Linda Hamiltonasal
2024-11-01 06:45:02663semak imbas

Why Does PHP Allow Direct Interpolation of Associative Array Elements in Double-Quoted Strings?

Interpolasi Tatasusunan Bersekutu dalam PHP: Gelagat Tidak Dijangka

Apabila menginterpolasi elemen tatasusunan bersekutu dalam PHP, gelagat tertentu mungkin menimbulkan kejutan. Pertimbangkan contoh berikut:

<code class="php">$ha = array('key1' => 'Hello to me');

print $ha['key1'];   // correct (usual way)
print $ha[key1];     // Warning, works (use of undefined constant)

print "He said {$ha['key1']}"; // correct (usual way)
print "He said {$ha[key1]}";   // Warning, works (use of undefined constant)

print "He said $ha['key1']";   // Error, unexpected T_ENCAPSED_AND_WHITESPACE
print "He said $ha[ key1 ]";   // Error, unexpected T_ENCAPSED_AND_WHITESPACE
print "He said $ha[key1]";     // !! correct (How Comes?)</code>

Anehnya, baris terakhir nampaknya kod PHP yang sah. Mengapakah ini berlaku?

Penjelasan

Percayai sintaks yang kelihatan luar biasa. Menurut dokumentasi rasmi, semua kaedah interpolasi pembolehubah disokong. Ini termasuk mengakses elemen tatasusunan dalam rentetan petikan dua tanpa melampirkannya dalam kurungan kerinting.

Punca bagi kelakuan tertentu ini mungkin tidak jelas sepenuhnya, tetapi ia berpunca daripada evolusi sejarah PHP, di mana ketidakkonsistenan sudah pasti berlaku. Namun begitu, ciri ini boleh dipercayai dan diterima secara meluas sebagai sintaks PHP yang sah.

Atas ialah kandungan terperinci Mengapakah PHP Membenarkan Interpolasi Langsung Elemen Tatasusunan Bersekutu dalam Rentetan Petikan Dua Kali?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn