三項演算子語法
条件 ? 结果1 : 结果2 説明:疑問符の前に記載された部分は判定条件です。この条件を満たした場合、結果は「1」、満たさなかった場合、結果は「2」となります。
本稿では、三元演算子と `if...else...` の違いについて詳細に比較・解説しており、皆様の参考になれば幸いです。
今日、論文のオンライン修正作業中に、理解できない文に遭遇しました:
$if_summary = $row['IF_SUMMARY']==2?'是':'否';その後、Baiduで検索すると、これはPHPの三項演算子であることがわかった。
この文の意味は、つまり
if($row['IF_SUMMARY']==2){
$if_summary="是";
}else{
$if_summary="否";
}三元演算子の機能は「if...else」文と同様であり、1行で記述できるため、コードが非常に簡潔で、実行効率も高いです。
PHPプログラムにおいて三項演算子を適切に使用することで、スクリプトをより簡潔かつ効率的に設計できる。
コード形式
(expr1) ? (expr2) : (expr3);解説
条件「expr1」が真のときには、文「expr2」を実行し、そうでない場合は「expr3」を実行します。
同じ機能を実現する場合、条件付き処理文を使用するには、複数行のコードを記述する必要があります:
if(expr1) {
expr2;
} else {
expr3;
}前述の三元演算子の利点は、決して誇張されたものではありません。ただし、多くの場合、この演算子はコードが比較的単純なとき、すなわち実行される文が単一の文である場合にのみ使用されます。
例:
$a>$b ? print "a大于b" : print "a小于b";実際、三元演算子は拡張して使用できます。設定された条件が成立する場合も、成立しない場合も、実行文は1文以上で構いません。以下の形式をご覧ください:
(expr1) ? (expr2).(expr3) : (expr4).(expr5);明確に確認できるように、複数の実行文は文字列演算記号(「」)を用いて連結することができ、各実行文は独立かつ完全な実行文であることを示すために小角括弧で囲まれている。
このように拡張すると、その機能は「if...else」文にさらに近づきます。
三元演算子のネスト使用
また、三元演算子はネストして使用することもできます。
例えば、a > b が成り立つ場合:a < c ならば x = c - a、それ以外の場合は x = a - c;
そうでない場合、a < b が成り立つとき:b < c であれば x = c - b、そうでなければ x = b - c:
$a>$b ? $x=($a<$c ? $c-$a : $a-$c) : $x=($b<$c ? $c-$b : $b-$c);ネストされた三項演算子は可読性に課題があり、将来的なコードメンテナンスにおいて問題が生じる可能性が高い。しかし、「if...else」などの流程文と比較すると、上記のケースでは確かに非常に簡潔である。この点こそが、この手法の魅力である。
怠惰を好む、あるいはコードの簡潔さを重視する人にとっては、`if`文に代わりに三項演算子を使用するのが最適な選択肢となるでしょう。`「三項」`に含まれる条件句以外の任意の「元」を考慮しなくても、三項演算子を使用する方法は、`if`文よりも簡潔です。
以下の文の文法は正しく、小文字の引用符を用いることで、第2または第3の「“」要素が無視されています:
$a>$b ? print "Yes" : "";
$a>$b ? '': print 'No';ご注意ください
ご注意ください:
三項演算子を使用する場合、`echo`文の代わりに `print`文を使用することを推奨します。
以下の一連の文列の理解に注意してください:
$str = $_GET['abc'] ? 'wangjinbo' : 'wjb';これは、「以下のように理解してはならない」
$str が $_GET['abc'] と等しい場合に 'wangjinbo' に、それ以外の場合は 'wjb' に割り当てる;
1:等値を判定するには `==` を使用してください。
元の二項・三項演算子の構文は上記の通りである:(expr1)?(expr2):(expr3)。この構文において、二項または三項演算子「wangjinbo」または「wjb」単体では意味のある式を構成することはできない。
正しい理解とは:
`$_GET['abc']为空值(也就是否(false),PHP中 ' ',null,0,undifine,都等效布尔值false)这时$str` は 'wjb' に設定する。それ以外の場合は 'wangjinbo' に設定する。
注:
IF文の条件に条件が含まれていない場合、内容である $_GET['abc'] が真(true)となるため、この条件が満たされ、str は 'wangjinbo' に割り当てられます。そうでない場合は、str は 'wjb' に割り当てられます。明示的な値が 'true' でない場合、「真(true)」は値があることを示し、「偽(false)」は値がないことを示します。