Teka-teki PHP: Interaksi Penambahan dan Penggabungjalinan
Pemaju PHP mungkin menghadapi gelagat pelik apabila menggabungkan penambahan ( ) dan penyambungan (.) pengendali. Pertimbangkan kod berikut:
<code class="php">$a = 1; $b = 2; echo "sum: " . $a + $b; echo "sum: " . ($a + $b);</code>
Melaksanakan kod ini menghasilkan output berikut:
2 sum: 3
Mengapa gema pertama gagal mencetak "jumlah:"?
Keutamaan dan Keterkaitan Pengendali
Kedua-dua pengendali penambahan dan penggabungan mempunyai keutamaan pengendali yang sama. Walau bagaimanapun, mereka adalah bersekutu kiri, bermakna mereka menilai dari kiri ke kanan. Ini menghasilkan susunan penilaian berikut:
echo "sum:" . ($a + $b); // Parentheses force addition first echo "sum:" . $a + $b; // Addition performed before concatenation
Penukaran Konteks Numerik
Dalam baris kedua, di mana kurungan digunakan, penambahan dilakukan terlebih dahulu. Walau bagaimanapun, dalam baris pertama, penggabungan diutamakan, menghasilkan:
"sum: 1" + 2
Dalam konteks berangka, PHP menukar rentetan "jumlah: 1" kepada integer, menghasilkan 1. Penambahan angka ini menghasilkan hasil 2.
Dokumentasi dan Implikasi
Tingkah laku ini tidak didokumenkan secara jelas dalam manual PHP. Walau bagaimanapun, adalah penting untuk memahami keutamaan pengendali dan peraturan persekutuan apabila menggunakan berbilang pengendali dalam satu kenyataan. Kegagalan berbuat demikian boleh membawa kepada hasil yang tidak dijangka, seperti yang ditunjukkan dalam contoh ini.
Oleh itu, adalah disyorkan untuk menggunakan kurungan secara eksplisit untuk menguatkuasakan susunan operasi yang diingini, terutamanya apabila menggabungkan jenis operator yang berbeza.
Atas ialah kandungan terperinci Mengapa Penggabungan PHP Nampaknya Diutamakan Daripada Penambahan dalam Kes Ini?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!