今日、オンラインで論文を編集しているときに、理解できないステートメントに遭遇しました:
$if_summary = $row['IF_SUMMARY']==2 ?'is':' No';
その後、Baidu でこれが PHP の三項演算子であることが判明しました
この文の意味は
if($row['IF_SUMMARY']==2){
$if_summary=" と同等ですYes";
}else {
$if_summary="No";
}
三項演算子の関数は、"if...else" プロセス ステートメントと一致しています。これは 1 行で記述されており、コードは非常に簡潔で実行効率が高くなります。
PHP プログラムで三項演算子を適切に使用すると、スクリプトをより簡潔で効率的にすることができます。
コードの形式は次のとおりです: (expr1) ? (expr2) : (expr3);
説明: 条件 "expr1" が true の場合はステートメント "expr2" を実行し、そうでない場合は "expr3" を実行します。
同じ機能を実現するには、条件付きフロー ステートメントを使用する場合、複数行のコードを記述する必要があります:
if(expr1) {
expr2;
} else {
expr3;
}
前述の三項演算子は「良い」と言っても過言ではありません。ただし、ほとんどの場合、三項演算子はコードが比較的単純な場合、つまり実行ステートメントが 1 つのステートメントのみである場合にのみ使用されます。例:
$a>$b ? print "a is great than b" : print "a is less than b";
実際には、設定された条件が true であるかどうかにかかわらず、三項演算子を拡張して使用できます。実行ステートメントは複数の文にすることができます。次の形式を見てください:
(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ネストしたものを使用する 三項演算子は可読性が低く、将来のコードの保守に問題が生じる可能性があります。ただし、「if...else」などのプロセス文と比較すると、確かに簡潔すぎます。以上のような状況が魅力です。
怠惰でコードの簡素化を追求したい人にとっては、三項演算子を使用して if process ステートメントを置き換えることは優れた選択肢となるはずです。 「三項」の条件文以外の「要素」を考慮する必要がない場合でも、if 文よりも三項演算子を使用した方が簡潔です。次のステートメントは構文的には正しく、2 番目または 3 番目の「要素」が小さな引用符で囲まれています:
$a>$b ? print "Yes" : "";
$a>$b '' : print 'No' ;
三項演算子を使用する場合は、echo ステートメントの代わりに print ステートメントを使用することをお勧めします。
次の一連のステートメントの理解に注意してください:
$str = $_GET['abc'] ? 'wangjinbo' : 'wjb';
これは、$str が $ に等しい場合として理解することはできません。 _GET['abc'] の場合、値は 'wangjinbo'、それ以外の場合は値は 'wjb'、理由 1: 等しいかどうかを判断するために == を使用する必要があります。理由 2: 三項演算子の構文は上記のとおりです: (expr1) ? (expr2) : (expr3)、明らかに、上記の 2 値および 3 値の 'wangjinbo' または 'wjb' は、単独では意味のある式を形成できません
正しい理解は、$_GET['abc'] が空の場合です。 PHP の ''、null、0、undifine がすべてブール値 false に等しいかどうか)、$str を 'wangjinbo' に割り当て、そうでない場合は 'wjb' に割り当てます。
元のリンク: bbs.php100.com/read-htm-tid-24239.html
www.bkjia.com