PHP
 Computer >> コンピューター >  >> プログラミング >> PHP

PHPの三項演算子とヌル合体演算子(??)の違いをわかりやすく解説


三項演算子とは

三項演算子は、if-else文を1つの式にまとめて記述するための演算子です。条件分岐を簡潔に書けるため、短い条件判定をコードの中に埋め込みたい場面でよく活用されます。

構文

(条件式) ? 式1 : 式2;

同等のif-else文

if(条件式) {
   return 式1;
}
else {
   return 式2;
}

条件式がtrueの場合は式1の結果を返し、falseの場合は式2の結果を返します。なお、条件式や各式にvoidを指定することはできません。

ヌル合体演算子とは

ヌル合体演算子(??)は、変数がnullの場合に代わりの値を返すための演算子です。PHP 7以降で利用可能になり、isset()による存在チェックと値の取得を1行で書けるようになりました。

構文

(変数) ?? 式;

同等のコード

if(isset(変数)) {
   return 変数;
}
else {
   return 式;
}

変数がnull(または未定義)の場合は、式の結果を返します。isset()による存在チェックも兼ねている点が大きな特徴です。

サンプルコード

<!DOCTYPE html>
<html>
<head>
   <title>PHPサンプル</title>
</head>
<body>
   <?php
      // $_GET['username']の値を取得し、
      // 値が渡されていない場合は 'not passed' を返す
      $username = $_GET['username'] ?? 'not passed';
      print($username);
      print("<br/>");
      // 三項演算子を使った同等のコード
      $username = isset($_GET['username']) ? $_GET['username'] : 'not passed';
      print($username);
      print("<br/>");
   ?>
</body>
</html>

実行結果

not passed
not passed

このように、ヌル合体演算子を使えば、isset()と三項演算子を組み合わせた冗長なコードを、より短く読みやすい形で記述できます。特に、フォーム入力やクエリパラメータなど、値が存在するかどうか不明な変数を扱う際に便利です。

  1. Pythonのセット演算入門|演算子とメソッドの違いを徹底解説

    Pythonのセット(set)は、重複しない要素を管理するための組み込みデータ型です。和集合・積集合・差集合・対称差といった集合演算は、対応するメソッドを呼び出す方法と演算子を使う方法の2通りで実行できます。この記事では、それぞれの具体的な書き方と、両者の違いについて解説します。 和集合(Union) union() メソッドを使う場合 >>> s1 = {1, 2, 3, 4, 5} >>> s2 = {4, 5, 6, 7, 8} >>> s1.union(s2) {1, 2, 3, 4, 5, 6, 7, 8} >>&

  2. Pythonの「=」と「==」の違いとは?代入と比較の使い分けを徹底解説

    Pythonにおける「=」と「==」の基本的な違いPythonでは「=」と「==」はまったく異なる役割を持つ記号です。初心者が混同しやすいポイントですが、それぞれの意味を正しく理解しておくことが重要です。「=」は代入演算子Pythonにおいて「=」記号は代入演算子として定義されています。左辺には1つの変数を、右辺には式を置く必要があり、右辺の式が評価された結果の値が、左辺の変数に格納されます。つまり、式と変数名は入れ替えて使うことはできません。>>> a=10 >>> b=20 >>> c=a+b >>> a,b,c (1