Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mengapa Operator Ternary dan Penggabungan Rentetan Menghasilkan Keputusan yang Tidak Diingini?

Mengapa Operator Ternary dan Penggabungan Rentetan Menghasilkan Keputusan yang Tidak Diingini?

Patricia Arquette
Patricia Arquetteasal
2024-10-24 05:12:01923semak imbas

Why Do Ternary Operator and String Concatenation Produce Unwanted Results?

Gelagat Penggabungan Rentetan dan Operator Ternary

Dalam pengaturcaraan, operator ternary (?) menawarkan cara ringkas untuk menilai keadaan dan menetapkan nilai. Walau bagaimanapun, nuansa tertentu bersama-sama dengan penggabungan rentetan boleh membawa kepada tingkah laku yang tidak dijangka.

Pertimbangkan coretan kod berikut:

<code class="php">$description = 'Paper: ' . ($paperType == 'bond') ? 'Bond' : 'Other';</code>

Matlamat di sini adalah untuk menetapkan perihalan berbeza berdasarkan nilai $paperType. Jika $paperType sama dengan "bon", $description hendaklah "Paper: Bond." Jika tidak, ia mestilah "Kertas: Lain-lain."

Walau bagaimanapun, hasil sebenar berbeza daripada yang dimaksudkan. Daripada menambahkan awalan "Kertas: ", ia hanya mengembalikan "Ikatan" atau "Lain-lain."

Untuk memahami sebab ini berlaku, mari kita pecahkan kod:

<code class="php">($paperType == 'bond') ? 'Bond' : 'Other'</code>

Ungkapan ini menilai keadaan $paperType == 'bond'. Jika benar, ia mengembalikan 'Bond.' Jika palsu, ia mengembalikan 'Lain-lain.'

Dalam kod asal, ungkapan ini digabungkan terus ke rentetan 'Paper: '.

<code class="php">'Paper: ' . (condition ? 'Bond' : 'Other')</code>

Isu timbul kerana rentetan 'Paper : ' digabungkan dengan hasil ungkapan ternary, bukan keadaan itu sendiri. Jadi, jika $paperType menyamai 'bon,' hasilnya ialah 'Bond,' yang digabungkan dengan rentetan kosong (disebabkan kolon mengekor), menghasilkan 'Bond.'

Untuk mencapai kelakuan yang dimaksudkan, penggabungan rentetan hendaklah disertakan dalam kurungan:

<code class="php">$description = 'Paper: ' . (($paperType == 'bond') ? 'Bond' : 'Other');</code>

Ini memastikan rentetan 'Paper: ' digabungkan dengan ungkapan ternary yang dinilai, menghasilkan nilai yang betul: 'Paper: Bond' jika $paperType ialah ' bon' dan 'Kertas: Lain-lain' sebaliknya.

Atas ialah kandungan terperinci Mengapa Operator Ternary dan Penggabungan Rentetan Menghasilkan Keputusan yang Tidak Diingini?. 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