Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mengapa Penggabungan dan Penambahan PHP Membawa kepada Keputusan Yang Tidak Dijangka?

Mengapa Penggabungan dan Penambahan PHP Membawa kepada Keputusan Yang Tidak Dijangka?

Susan Sarandon
Susan Sarandonasal
2024-10-31 10:50:29385semak imbas

Why Does PHP Concatenation and Addition Lead to Unexpected Results?

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!

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