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

PHPの「|」(ビットOR)と「||」(論理OR)演算子の違いを徹底解説

「|」ビット単位OR演算子とは

「|」はビット単位OR演算子です。数値を2進数のビット列として扱い、対応する各ビットを比較して、どちらか一方でも1であればそのビットを1に設定します。

「||」論理OR演算子とは

「||」は論理OR演算子で、オペランド全体を一つの値として評価します。if文などの条件分岐で真偽値を判定する際によく使われます。また、「||」には短絡評価(ショートサーキット評価)という特徴があり、左側のオペランドがtrueと評価された場合、右側の式は評価されません。

サンプルコード

以下の例では、「|」と「||」の動作の違いを実際のコードで確認できます。

<!DOCTYPE html>
<html>
<head>
    <title>PHP Example</title>
</head>
<body>
    <?php
        $x = 1; // 0001
        $y = 2; // 0010

        print('$x | $y = ');
        echo $x | $y;
        print("<br/>");
        print('$x || $y = ');
        echo $x || $y;
    ?>
</body>
</html>

実行結果

$x | $y = 3
$x || $y = 1

結果の解説

$x = 1(2進数で0001)、$y = 2(2進数で0010)とした場合の挙動は次のとおりです。

  • $x | $y の場合: ビットごとのOR演算が行われ、0001 OR 0010 = 0011 となるため、結果は「3」となります。
  • $x || $y の場合: 両方のオペランドが0以外(真とみなされる値)であるため、論理ORの評価結果はtrueとなり、出力時には「1」と表示されます。

使い分けのポイント

このように、「|」はビットレベルの操作(フラグ管理やマスク処理など)に適しており、「||」は条件式の真偽判定に適しています。用途に応じて正しく使い分けることが重要です。

  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