ホームページ >バックエンド開発 >PHPチュートリアル >三項演算子の文字列連結で予期しない結果が生じるのはなぜですか?

三項演算子の文字列連結で予期しない結果が生じるのはなぜですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-10-24 02:19:29683ブラウズ

Why Unexpected Result in Ternary Operator String Concatenation?

三項演算子の文字列連結の予期しない結果

最近のコーディング シナリオでは、特定のコード動作により開発者が困惑しています。問題のコードは、三項条件演算子を利用して、指定された条件に基づいて文字列値を決定します。しかし、結果は期待どおりではありません。

コードと観察

精査中のコードは次のとおりです。

$description = 'Paper: ' . ($paperType == 'bond') ? 'Bond' : 'Other';

意図このコードの背後にあるのは、$paperType が 'bond' の場合は $description 変数に 'Paper: Bond' を割り当て、$paperType が 'bond' でない場合は 'Paper: Other' を割り当てることです。

ただし、このコードでは、開発者は $description に値 'Bond' または 'Other' が直接割り当てられており、予期されるプレフィックス 'Paper: ' が付加されていないことに気付きました。この一見奇妙な結果は、説明の検索を促しました。

修正

詳しく分析すると、三項式の周囲のかっこが省略されていることが明らかになります。この省略により操作の順序が変更され、予期しない動作が発生します。

正しいコードは次のとおりです。

$description = 'Paper: ' . ($paperType == 'bond' ? 'Bond' : 'Other');

括弧を使用すると、文字列 'Paper: ' が正しく連結されます。三項式の結果を使用して、目的の出力が確実に達成されるようにします。

以上が三項演算子の文字列連結で予期しない結果が生じるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。