Penggabungan Rentetan Operator Ternary Hasil Tidak Dijangka
Dalam senario pengekodan baru-baru ini, gelagat kod tertentu telah menyebabkan pembangun bingung. Kod yang dipersoalkan menggunakan pengendali bersyarat ternary untuk menentukan nilai rentetan berdasarkan syarat tertentu. Bagaimanapun, keputusannya tidak seperti yang dijangkakan.
Kod dan Pemerhatian
Kod yang diteliti adalah seperti berikut:
$description = 'Paper: ' . ($paperType == 'bond') ? 'Bond' : 'Other';
Niat di sebalik kod ini adalah untuk menetapkan 'Paper: Bond' kepada pembolehubah $description jika $paperType ialah 'bond' dan 'Paper: Other' jika $paperType bukan 'bond'.
Walau bagaimanapun, apabila melaksanakan kod, pembangun memerhatikan bahawa $description sama ada diberikan nilai 'Bond' atau 'Other' secara langsung, tanpa awalan dijangka 'Paper: '. Hasil yang kelihatan pelik ini telah mendorong pencarian untuk penjelasan.
Pembetulan
Setelah dianalisis dengan lebih dekat, ternyata tanda kurungan ditinggalkan di sekitar ungkapan ternary. Peninggalan ini mengubah susunan operasi, mengakibatkan tingkah laku yang tidak dijangka.
Kod yang betul hendaklah:
$description = 'Paper: ' . ($paperType == 'bond' ? 'Bond' : 'Other');
Dengan tanda kurung di tempatnya, rentetan 'Kertas: ' digabungkan dengan betul dengan hasil ungkapan ternary, memastikan output yang diingini dicapai.
Atas ialah kandungan terperinci Mengapa Keputusan Tidak Dijangka dalam Gabungan Rentetan Operator Ternary?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!