こんにちは私はこのコードがなぜ(少なくとも私にとって)不正確な結果をもたらすのか知りたいだけです。
まあ、おそらく私はここで間違っています
$description = 'Paper: ' . ($paperType == 'bond') ? 'Bond' : 'Other';
PaperTypeが「Bond」と等しい場合、説明は「Paper:Bond」であり、paperTypeが「Bond」と等しくない場合、説明は「Paper:Other」であると推測していました。
しかし、このコードを実行すると、結果は「Bond」または「Other」のいずれかであり、文字列「Paper:」はどこに行きましたか?
$description = 'Paper: ' . ($paperType == 'bond' ? 'Bond' : 'Other');
文字列が正しい順序で文字列に連結されるように、括弧を追加してみてください。
演算子の優先順位に関連しています。次のことを行う必要があります。
$description = 'Paper: ' . (($paperType == 'bond') ? 'Bond' : 'Other');
みんなが解決策をくれたと思うので、思いがけない結果の理由を投稿したい。
まず、ここで、原点と、演算子の評価方法(左、右、結合など)を確認できます。
http://php.net/manual/fa/language.operators.precedence.php
さて、あなたの文章を分析したら。
$ paperType = 'bond';
$ description = 'Paper:'. ($ paperType == 'bond')? 'Bond': 'Other';
1)テーブルを確認すると、括弧が最初に評価され、次に「。」が評価されます。 (連結)が評価され、最後に三項演算子 '?'が評価されるため、次のように関連付けることができます。
// evaluate the parenthesis ... ($ paperType == 'bond')
$ description = ('Paper:'. 1)? 'Bond': 'Other';
//result
$ description = 'Paper: 1'? 'Bond': 'Other';
2)これで三項演算子ができました。文字列が「true」と評価されることがわかります
// phpのドキュメントブール値に変換する場合、次の値はFALSEと見なされます:
...空の文字列と文字列 "0"
$ description = true? 'Bond': 'Other';
3)最後に
$ description = 'bond';
質問が明確になったといいのですが。ご挨拶。