ホームページ >バックエンド開発 >PHPチュートリアル >PHP の「? :」演算子とその使用法を徹底分析!
この記事では、PHP の「? :」演算子 (三項式) を詳しく分析し、その機能、使用方法、およびその効果を確認します。お役に立てれば幸いです!
PHP の ?
および :
演算子とは何ですか? ?
は次のとおりです:
(($request_type == 'SSL') ? HTTPS_SERVER : HTTP_SERVER)
これは条件演算子です。
$x ? $y : $z
は、「$x が true の場合は $y を使用し、そうでない場合は $z を使用する」ことを意味します。
簡略化することもできます。
$x ?: $z
は、「$x が true の場合は $x を使用し、そうでない場合は $z を使用する」ことを意味します。
?: は「三項演算子」だという人もいるでしょう。これは正しくない。 ?: 三項演算子の場合、オペランドが 3 つ必要です。その理由は、通常、これが現在の言語における唯一の三項演算子であるためです。
以下では、ターナリとは何なのか、どのように使用するのか、いつ使用するのか、なぜ使用するのか、どのような場合に使用しないのかを紹介します。
三項演算子とは何ですか?
? :
は、if
と else
の略称です。途中に「三項演算子」についての公式説明があります。
PHP 5.3 以降:
PHP 5.3 以降、三項演算子の中間部分を省略できるようになりました。式 expr1 ?: expr3 は、expr1 が TRUE の場合は expr1 を返し、それ以外の場合は expr3 を返します。
PHP 7.0 以降
#PHP 7 には、新しい Null 合体演算子が追加されました。これは、「isset 三項演算子」とも呼ばれる三項演算子と同じです。これにより、連鎖三項演算から isset() が削除されます。PHP 5 では、存在しない可能性のある変数に三項演算子を使用する場合は、三項ステートメントの先頭で isset() を使用する必要があります。 PHP 7 では、これを行うことができます:
$result = isset($nonExistentVariable) ? $nonExistentVariable : ‘default’;Null 合体演算子は空の文字列を処理できないことに注意してください。これをチェーンで使用して、複数の変数をチェックできます。
$result = $nonExistentVariable ?? ‘default’;PHP では、管理者がログイン可能なシステムでのテストのためにユーザーのふりをすることは珍しくありません。上記のように、ユーザーが別のユーザーになりすましてログインしていない場合、そのユーザーはゲストになります。それでも理解できない場合は、読み続けて三項演算子とは何か、その使用方法を学習してから、戻って新しい PHP での三項演算子の使用方法を確認してください。シンボル?
通常の if
ステートメントは次のとおりです。$user = $userImpersonatingAnotherUser ?? $loggedInUser ?? “Guest”;
三項演算子を使用して簡略化します。
if (isset($_POST['hello'])) { $var = 'exists'; } else { $var = 'error'; }短いですが、理解するのが難しくなります。これは、上記のように変数
$var
で使用できるだけでなく、以下のようにecho で変数が false かどうかを確認するために使用することもできます:
$var = isset($_POST['hello']) ? 'exists' : 'error'; ^ ^ ^ ^ | | then | else | | | | if post isset $var=this $var=this
なぜそれを使用するのでしょうか? 私は三項算術が興味深いと思います。一部の開発者はパフォーマンスを求めますが、三項演算子は nice
、特に PHP 5.4 の最新の短いエコーなどの他の機能と組み合わせると役立ちます。
$isWinner = false; // 输出 'you lose' echo ($isWinner) ? 'You win!' : 'You lose'; // 同上 return ($isWinner) ? 'You win!' : 'You lose';余談ですが、「ビュー/テンプレート」(MVC の例に注意してください) で、サーバー側のロジックを使用したい場合は、三項演算子またはその他の短い文を使用するのが最善の方法です。 「その他の短い文章」、次のようなもの:
<?php $array = array(0 => 'orange', 1 => 'multicoloured'); ?> <p> <?php foreach ($array as $key => $value) { ?> <span><?=($value==='multicoloured')?'nonsense':'pointless'?></span> <?php } ?> </p> <!-- Outputs: <span> pointless </span> <span> nonsense </span> -->
注、個人的には、このような意味のない短い文章は好きではありません。
三項演算子の速度はどれくらいですか?
人々は微細な最適化を好みます。これも行われます。したがって、三項演算が通常の if
/else ステートメントよりもどれだけ高速であるかを知ることが重要です。
記事によると、約0.5ms高速化していることが分かりました。これはすでにはるかに高速です!
コードは次のようになります:
読みやすい
if ($isWinner) : // Show something cool endif;理由は次のとおりです:
三項ネストが長すぎます
最初のステートメントはオレンジ色である必要があります
三項算術は実際には非常に簡単なので、恐れる必要はありません。 速度が向上したとは思わないでください。実際には違いはありません。結果を シンプル
、見栄えを良くすることができ、コードを常に読みやすい状態に保つことができる場合に使用します。三項演算子を三項なしで使用しないでください。 推奨学習: 「PHP ビデオ チュートリアル 」
以上がPHP の「? :」演算子とその使用法を徹底分析!の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。