phpの三項演算子とifの詳しい解説

*文
リリース: 2023-03-18 15:02:01
オリジナル
29453 人が閲覧しました

三項演算子の構文: 条件 ? 結果 1 : 結果 2 注:疑問符の前の位置は判定条件です。条件が満たされていれば結果は 1、満たされていない場合は結果は 2 となります。

おすすめマニュアル: php完全独学マニュアル

この記事では三項演算子とif...else...を詳しく比較解説していますので、皆様のお役に立てれば幸いです。

今日オンラインで自分の論文を見直していたら、理解できない文に遭遇しました:

$if_summary = $row['IF_SUMMARY']==2?'是':'否';
ログイン後にコピー

後からBaiduで調べたら、それがPHPの三項演算子であることが分かりました

この文の意味は以下と同じです

if($row['IF_SUMMARY']==2){
$if_summary="是";
}else{
$if_summary="否";
}
ログイン後にコピー

三項演算子 この関数は「if...else」処理ステートメントと一致しており、コードは非常に簡潔で、実行効率が高くなります。

PHP プログラムで三項演算子を適切に使用すると、スクリプトをより簡潔で効率的にすることができます。

コードの形式は次のとおりです:

(expr1) ? (expr2) : (expr3);
ログイン後にコピー

説明:

条件 "expr1" が true の場合はステートメント "expr2" を実行し、それ以外の場合はステートメント "expr3" を実行します。

同じ機能を実現するには、条件処理文を使用する場合、複数行のコードを記述する必要があります:

if(expr1) {

expr2;
} else {
expr3;
}
ログイン後にコピー

上記の三項演算子の良さは誇張ではないことがわかります。ただし、ほとんどの場合、三項演算子はコードが比較的単純な場合、つまり実行ステートメントが 1 つのステートメントのみである場合にのみ使用されます。

例:

$a>$b ? print "a大于b" : print "a小于b";
ログイン後にコピー

実際、設定された条件が true であるかどうかにかかわらず、実行ステートメントは複数の文になる可能性があります。次の形式を試してみると、それがはっきりとわかります。複数の実行 文字列演算子 (「.」) を使用してステートメントを接続できます。各実行ステートメントは小さな山括弧で囲まれ、独立した完全な実行ステートメントであることを示します。

この拡張後、その機能は "if...else" プロセス ステートメントに近くなります。


同時に、三項演算子を入れ子にして使用することもできます。

たとえば、a が b より大きい場合: a が c より小さい場合、x=c-a、それ以外の場合は x=a-c

それ以外の場合、a が b より小さい場合: b が c より小さい場合、それ以外の場合は x=c-b x=b-c:

(expr1) ? (expr2).(expr3) : (expr4).(expr5);
ログイン後にコピー

入れ子になった三項演算子の可読性はあまり良くなく、今後のコードの保守に問題が生じる可能性があります。 ただし、「if...else」などの処理文と比較すると、上記の状況は、確かにそうです。 簡潔であり、それが魅力です。

怠け者でコードの単純さを追求したい人にとっては、三項演算子を使用して if process ステートメントを置き換えるのは優れた選択肢となるはずです。 「三項」の条件文以外の「要素」を考慮する必要がない場合でも、if 文よりも三項演算子を使用した方が簡潔です。

次のステートメントの構文は正しく、2 番目または 3 番目の「要素」が引用符で囲まれていない小さな方法で省略されています:

$a>$b ? $x=($a<$c ? $c-$a : $a-$c) : $x=($b<$c ? $c-$b : $b-$c);
ログイン後にコピー

次の点に注意してください:

三項演算子を使用する場合は、次の使用をお勧めします。 print ステートメントは echo ステートメントを置き換えます。

次の一連のステートメントの理解に注意してください:

$a>$b ? print "Yes" : "";
$a>$b ? &#39;&#39;: print &#39;No&#39;;
ログイン後にコピー

これは次のように理解できません:

$str が $_GET['abc'] に等しい場合、割り当てられた値は 'wangjinbo' であり、それ以外の場合は割り当てられた値は 'wjb';

理由 1: 等しいかどうかを判断するには、== を使用する必要があります。

理由 2: 三項演算子の構文は次のとおりです: (expr1) : (expr3)上記の二項、三項の 'wangjinbo' または 'wjb' だけでは意味のある式を形成できません


の正しい理解は次のとおりです: $_GET['abc'] が null 値 (つまり、(false) であるかどうか) )、' '、null、0、PHP の undifine、どちらもブール値 false に相当します) この時点で、$str には値 'wjb' が割り当てられ、それ以外の場合は値 'wangjinbo' が割り当てられます。

IF文の条件に条件がない場合、内容自体$_GET['abc']がtrueとなり、条件が成立した場合はstrに値'wangjinbo'が代入され、そうでない場合は値'wjb'が代入されます; true の明確な値がない場合、true は値があることを意味し、false は値がないことを意味します。

おすすめ関連記事:

1.
PHP 三項演算子: 速いかどうか? 2.
PHPにおける三項演算子とNull合体演算子の簡単な比較 3.
phpの一般的な演算子とは何ですか
関連ビデオの推奨: 1.
Dugu Jiijian (4)_PHP ビデオ チュートリアル

以上がphpの三項演算子とifの詳しい解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート