三項演算子と文字列連結癖?
-
19-09-2019 - |
質問
こんにちは私は(少なくとも私にとっては)なぜこのコード利回り不正な結果を知りたい。
まあ、たぶん私は障害ここにいるよ。
$description = 'Paper: ' . ($paperType == 'bond') ? 'Bond' : 'Other';
「:ボンド紙」とのPaperTypeが「ボンド」に等しいではない場合、次に説明は「ペーパー:その他」です。 この私がのPaperTypeが「ボンド」を等しい場合、その後の記述があることを推測しました。
しかし、私はこのコードを実行したときの結果は説明が「ボンド」または「その他」のいずれかであると私を残し 文字列「紙は:」どこ不思議???行ってきました。
解決
$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)私たちは今、三項演算子を持って、我々は文字列が評価されていることを知っている「真」
// PHPのドキュメント ブール値に変換する場合、以下の値がFALSEであると考えられる。
... 空の文字列、および文字列「0」
$ description = true? 'Bond': 'Other';
3)最後に
$ description = 'bond';
私は質問を明確にしている願っています。 挨拶ます。
所属していません StackOverflow