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

PHPのAND演算子と&&演算子の違いをわかりやすく解説

PHPには論理積(AND)を表す演算子として「AND」と「&&」の2種類が存在します。どちらも同じ論理AND演算を行いますが、演算子の優先順位が異なるため、代入演算子「=」と組み合わせて使う際に結果が変わるという重要な違いがあります。

「AND」論理演算子とは

「AND」は論理AND演算子ですが、代入演算子「=」よりも優先順位が低いという特徴を持っています。そのため、$result = $x AND $y; のように書くと、先に $result = $x の代入が実行され、その後に $y とのAND評価が行われることになります。

「&&」論理演算子とは

「&&」も同じく論理AND演算子ですが、「=」よりも優先順位が高い点が異なります。したがって、$result = $x && $y; では、まず $x && $y の論理演算が評価され、その結果が $result に代入されます。

動作確認用サンプルコード

以下の例では、「AND」と「&&」の挙動の違いを実際に確認できます。

<!DOCTYPE html>
<html>
<head>
    <title>PHP サンプル</title>
</head>
<body>
    <?php
        $x = true;
        $y = false;

        $result = $x AND $y;
        print('$result = $x AND $y');
        print("<br/>");
        var_dump($result);
        print("<br/>");

        $result = $x && $y;
        print('$result = $x && $y');
        print("<br/>");
        var_dump($result);
    ?>
</body>
</html>

実行結果

$result = $x AND $y
bool(true)
$result = $x && $y
bool(false)

結果の解説

$x = true$y = false の場合でも、「AND」を使った方は bool(true) となりました。これは、代入が先に行われ $resulttrue が格納されたためです。一方、「&&」を使った方は論理演算が先に評価されるため、true && false の結果である bool(false) が代入されています。

このように、意図しないバグを防ぐためにも、条件式と代入を組み合わせる場合は「&&」を使用することが推奨されます。「AND」や「OR」は主にSQLライクな可読性を重視する場面で使われることが多い演算子です。

  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