為什麼三元運算子和字串連接會產生不需要的結果?

Patricia Arquette
發布: 2024-10-24 05:12:01
原創
923 人瀏覽過

Why Do Ternary Operator and String Concatenation Produce Unwanted Results?

三元運算子和字串連接行為

在程式設計中,三元運算子(?) 提供了一種簡潔的方法來評估條件和賦值。但是,與字串連接相關的某些細微差別可能會導致意外行為。

考慮以下程式碼片段:

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

此處的目標是根據的值分配不同的描述$paperType.如果$paperType 等於“bond”,則$description 應為“Paper :Bond」。否則,應該是「Paper: Other」。

但是,實際結果與預期不同。它不附加“Paper:”前綴,而是僅返回“Bond”或“Other”。

要理解為什麼會發生這種情況,讓我們分解程式碼:

<code class="php">($paperType == 'bond') ? 'Bond' : 'Other'</code>
登入後複製

這個表達式評估條件 $paperType == 'bond'。如果為 true,則傳回「Bond」。如果為 false,則傳回 'Other'。

在原始程式碼中,此表達式直接連接到字串 'Paper: '。

<code class="php">'Paper: ' . (condition ? 'Bond' : 'Other')</code>
登入後複製

出現此問題的原因是字串 'Paper : ' 連接到三元表達式的結果,而不是條件本身。因此,如果 $paperType 等於 'bond',結果是 'Bond',它與一個空字串(由於尾隨冒號)連接,產生 'Bond'。

為了實現預期的行為,字串連接應括在括號中:

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

這可確保字串'Paper: ' 連接到計算的三元表達式,從而產生正確的值: 'Paper: Bond' 如果$paperType 為'否則為“債券”和“紙張:其他”。

以上是為什麼三元運算子和字串連接會產生不需要的結果?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!