0

私は、省略形の if / else ステートメントに else if を含めることができるかどうかについて、決定的な答えを探していました。変数に値を割り当てるだけで、通常は機能するときに、かなり定期的に使用します。ただし、時々、予期しない結果が返されます。

これらのステートメントにelse ifを含めないなどの決定的な答えを探してみましたが、ドキュメントで見つけることができません。

よりよく説明するために、PHP に次の if ステートメントがあるとしましょう。

$type = 'one';
$choice = ($type == 'one') ? 'One Fish' : ($type == 'two') ? 'Two Fish' : 'Three Fish';

結果として「Two Fish」が返されるのはなぜですか? PHPやJSを含む複数の言語でこれを経験しました。やってはいけないことをしようとしているだけですか?

4

2 に答える 2

4

あなたへの私のアドバイスは、if/else ステートメントの省略形をシンプルに保ち、より複雑なものについては "手書き" でコード化することです。

これの理由は寿命です。数か月後にコードを読むのがはるかに簡単になります。チーム内で作業している場合は、コードがよりチームフレンドリーになります!

于 2013-03-28T20:08:21.547 に答える
1

最初のテストの「else」部分を括弧で囲む必要があるため、正しく解釈されます。

$choice = ($type == 'one')
           ? 'One Fish'
           : (($type == 'two') ? 'Two Fish' : 'Three Fish');

三項演算子の使用に関するアドバイスを次に示します。

于 2013-03-28T19:58:14.610 に答える