Menyingkap Kekaburan PHP: Kes Penasaran Penggabungan dan Penambahan
Keutamaan pengendali PHP dan perkaitan boleh membawa kepada hasil yang tidak dijangka apabila kedua-dua penambahan dan penggabungan operator terlibat. Pertimbangkan kod ini:
<code class="php">$a = 1; $b = 2; echo "sum: " . $a + $b; // Output: 2 echo "sum: " . ($a + $b); // Output: sum: 3</code>
Mengapa terdapat percanggahan? Semuanya berpunca dari susunan penilaian pengendali PHP.
Kedua-dua pengendali penambahan ( ) dan penyambungan (.) mempunyai keutamaan yang sama, tetapi ia adalah bersekutu kiri. Ini bermakna apabila PHP menemui ungkapan yang melibatkan berbilang operator dengan keutamaan yang sama, ia menilai operator paling kiri dahulu dan berjalan ke kanan.
Dalam pernyataan gema pertama, operator penggabungan (.) menilai terlebih dahulu , menghasilkan yang berikut:
"sum: 1" + 2
Rentetan "jumlah: 1" kemudiannya ditukar kepada nilai berangka (0) dan ditambah kepada $b (2), menghasilkan output 2.
Dalam pernyataan gema kedua, kurungan memaksa pengendali penambahan untuk menilai dahulu:
($a + $b) . "sum:"
Hasilnya kemudian digabungkan dengan rentetan "sum:", menghasilkan output "jumlah: 3" yang dikehendaki ".
Tingkah laku ini didokumenkan dalam dokumentasi PHP mengenai Keutamaan Operator. Ia menyatakan bahawa "Pengendali dengan keutamaan yang sama menilai dari kiri ke kanan, iaitu, pertama , kemudian ., kemudian -."
Atas ialah kandungan terperinci Mengapa Penggabungan dan Penambahan PHP Membawa kepada Keputusan Yang Tidak Dijangka?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!