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

Patricia Arquette
Lepaskan: 2024-10-24 05:12:01
asal
922 orang telah melayarinya

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!