Rumah > Artikel > pembangunan bahagian belakang > Mengapakah PHP Membenarkan Interpolasi Langsung Elemen Tatasusunan Bersekutu dalam Rentetan Petikan Dua Kali?
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!