PHP の「? :」演算子とその使用法を徹底分析!

青灯夜游
リリース: 2023-04-10 17:16:02
転載
16441 人が閲覧しました

この記事では、PHP の「? :」演算子 (三項式) を詳しく分析し、その機能、使用方法、およびその効果を確認します。お役に立てれば幸いです!

PHP の「? :」演算子とその使用法を徹底分析!

PHP の ? および : 演算子とは何ですか? ?

は次のとおりです:

(($request_type == 'SSL') ? HTTPS_SERVER : HTTP_SERVER)
ログイン後にコピー

これは条件演算子です。

$x ? $y : $z
ログイン後にコピー

は、「$x が true の場合は $y を使用し、そうでない場合は $z を使用する」ことを意味します。

簡略化することもできます。

$x ?: $z
ログイン後にコピー

は、「$x が true の場合は $x を使用し、そうでない場合は $z を使用する」ことを意味します。

?: は「三項演算子」だという人もいるでしょう。これは正しくない。 ?: 三項演算子の場合、オペランドが 3 つ必要です。その理由は、通常、これが現在の言語における唯一の三項演算子であるためです。

以下では、ターナリとは何なのか、どのように使用するのか、いつ使用するのか、なぜ使用するのか、どのような場合に使用しないのかを紹介します。

三項演算子とは何ですか?

? : は、ifelse の略称です。途中に「三項演算子」についての公式説明があります。

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 => &#39;orange&#39;, 1 => &#39;multicoloured&#39;); 
?>

<p>
    <?php foreach ($array as $key => $value) { ?>
        <span><?=($value===&#39;multicoloured&#39;)?&#39;nonsense&#39;:&#39;pointless&#39;?></span>
    <?php } ?>
</p>

<!-- Outputs:
    <span>
        pointless
    </span>
    <span>
        nonsense
    </span> 
-->
ログイン後にコピー

注、個人的には、このような意味のない短い文章は好きではありません。

三項演算子の速度はどれくらいですか?

人々は微細な最適化を好みます。これも行われます。したがって、三項演算が通常の if

/

else ステートメントよりもどれだけ高速であるかを知ることが重要です。 記事によると、約0.5ms高速化していることが分かりました。これはすでにはるかに高速です!

待って、そうではありません。この結論は、1 行のコードで何千もの操作を繰り返し実行することから得られます。だから全く心配しないでください、それは無意味です。

非実用的な三項演算子

コードは次のようになります:

読みやすい

    理解しやすい
  • 変更が簡単
  • 明らかに、これはコードを読む人のコーディング能力と、そのような問題を理解する能力に依存します。前の単純な例には問題はありませんが、次の例は
  • 悪い
です:

if ($isWinner) :
    // Show something cool
endif;
ログイン後にコピー
理由は次のとおりです:

三項ネストが長すぎます

  • switch
  • ステートメントを使用できます
  • 最初のステートメントはオレンジ色である必要があります
  • ##概要

三項算術は実際には非常に簡単なので、恐れる必要はありません。 速度が向上したとは思わないでください。実際には違いはありません。結果を シンプル

見栄えを良くすることができ、コードを常に読みやすい状態に保つことができる場合に使用します。三項演算子を三項なしで使用しないでください。 推奨学習: 「PHP ビデオ チュートリアル

以上がPHP の「? :」演算子とその使用法を徹底分析!の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:learnku.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!