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」と表示されます。
使い分けのポイント
このように、「|」はビットレベルの操作(フラグ管理やマスク処理など)に適しており、「||」は条件式の真偽判定に適しています。用途に応じて正しく使い分けることが重要です。
-
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} >>&
-
Pythonの「=」と「==」の違いとは?代入と比較の使い分けを徹底解説
Pythonにおける「=」と「==」の基本的な違いPythonでは「=」と「==」はまったく異なる役割を持つ記号です。初心者が混同しやすいポイントですが、それぞれの意味を正しく理解しておくことが重要です。「=」は代入演算子Pythonにおいて「=」記号は代入演算子として定義されています。左辺には1つの変数を、右辺には式を置く必要があり、右辺の式が評価された結果の値が、左辺の変数に格納されます。つまり、式と変数名は入れ替えて使うことはできません。>>> a=10 >>> b=20 >>> c=a+b >>> a,b,c (1