PHPでウェブの世界と繋がろう!
menu
ホーム > PHPの文法 > 4 演算子 > 4-10 論理演算子

4-10 論理演算子

Pocket

- 1 分ノート ! -

and 論理積 or 論理和
xor 排他的論理和 ! 否定
&& 論理積 || 論理和
  • 論理演算子論理値を評価し論理値を返す
  • 論理演算子アルファベット版記号版 がある
  • アルファベット版の優先順位が上

論理演算子とは
POINT

  • 論理演算子論理値を評価し論理値を返す
  • 論理演算子アルファベット版記号版 がある
  • アルファベット版の優先順位が上

論理演算子は論理値を評価し、結果を論理値で返します。オペランドは論理値とされます。(オペランドとは演算子の対象となる値のこと)。論理値は「」「」を表す値であり、キーワード「TREU」と「FALSE」で表されます。論理値の詳細についてはこちらを参照下さい。

論理演算子はアルファベット版記号版2種類あります。アルファベット版と記号版では評価の優先順位が異なり、アルファベット版の優先順位が上です。

論理演算子の種類

論理演算子の種類、優先順位、結合時の評価です。すべての演算子の種類や優先順位はこちらを参照下さい。

演算子 名前 優先順位 結合時の評価 結果
and 論理積 3 left $a and $b $a および $b が共に TRUE の場合に TRUE
or 論理和 1 left $a or $b $a または $b のどちらかが TRUE の場合に TRUE
xor 排他的論理和 2 left $a xor $b $a または $b のどちらかが TRUE でかつ両方とも TRUE でない場合に TRUE
! 否定 6 right ! $a $a が TRUE でない場合 TRUE
&& 論理積 5 left $a && $b $a および $b が共に TRUE の場合に TRUE
|| 論理和 4 left $a || $b $a または $b のどちらかが TRUE の場合に TRUE

計算の例

「 and (論理積) 」「 && (論理積) 」
 左辺オペランド と 右辺オペランド の 両方 が TRUE である場合に TRUE を返します。

「and(論理積)」「&&(論理積)」 結果がTRUEの場合は左右両方TRUE

//左右両方TRUE
if(TRUE and TRUE) echo '結果はTRUEです。'; else echo '結果はFALSEです。';
echo "<br/>\n";
//左右両方TRUE
$a = 1;
$b = 2;
if(($a === 1) and ($b === 2)) echo '結果はTRUEです。'; else echo '結果はFALSEです。';
echo "<br/>\n";
//左右両方TRUE
$a = 1;
$b = 2;
if(($a + $b === 3) and ($b - $a === 1)) echo '結果はTRUEです。'; else echo '結果はFALSEです。';

結果は

結果はTRUEです。
結果はTRUEです。
結果はTRUEです。

となります。

「 and (論理積) 」「 && (論理積) 」 結果がFALSEの場合は左右片方FALSE

//左右片方FALSE
if(TRUE and FALSE) echo '結果はTRUEです。'; else echo '結果はFALSEです。';
echo "<br/>\n";
//左右片方FALSE
$a = 1;
$b = 2;
if(($a === 1) and ($b === -2)) echo '結果はTRUEです。'; else echo '結果はFALSEです。';
echo "<br/>\n";
//左右片方FALSE
$a = 1;
$b = 2;
if(($a + $b === 3) and ($b - $a === -1)) echo '結果はTRUEです。'; else echo '結果はFALSEです。';

結果は

結果はFALSEです。
結果はFALSEです。
結果はFALSEです。

となります。

「 or (論理和) 」「 || (論理和) 」
 左辺オペランド か 右辺オペランド の どちらか が TRUE である場合に TRUE を返します。

「or(論理和)」「||(論理和)」 結果がTRUEの場合は左右片方TRUE

//左右片方TRUE
if(TRUE or FALSE) echo '結果はTRUEです。'; else echo '結果はFALSEです。';
echo "<br/>\n";
//左右片方TRUE
$a = 1;
$b = 2;
if(($a === 1) or ($b === -2)) echo '結果はTRUEです。'; else echo '結果はFALSEです。';
echo "<br/>\n";
//左右片方TRUE
$a = 1;
$b = 2;
if(($a + $b === 3) or ($b - $a === -1)) echo '結果はTRUEです。'; else echo '結果はFALSEです。';

結果は

結果はTRUEです。
結果はTRUEです。
結果はTRUEです。

となります。

「 or (論理和) 」「 || (論理和) 」 結果がTRUEの場合は左右両方TRUE

//左右両方TRUE
if(TRUE or TRUE) echo '結果はTRUEです。'; else echo '結果はFALSEです。';
echo "<br/>\n";
//左右両方TRUE
$a = 1;
$b = 2;
if(($a === 1) or ($b === 2)) echo '結果はTRUEです。'; else echo '結果はFALSEです。';
echo "<br/>\n";
//左右両方TRUE
$a = 1;
$b = 2;
if(($a + $b === 3) or ($b - $a === 1)) echo '結果はTRUEです。'; else echo '結果はFALSEです。';

結果は

結果はTRUEです。
結果はTRUEです。
結果はTRUEです。

となります。

「 or (論理和) 」「 || (論理和) 」 結果がFALSEの場合は両方FALSE

//両方FALSE
if(FALSE or FALSE) echo '結果はTRUEです。'; else echo '結果はFALSEです。';
echo "<br/>\n";
//両方FALSE
$a = 1;
$b = 2;
if(($a === -1) or ($b === -2)) echo '結果はTRUEです。'; else echo '結果はFALSEです。';
echo "<br/>\n";
//両方FALSE
$a = 1;
$b = 2;
if(($a + $b === -3) or ($b - $a === -1)) echo '結果はTRUEです。'; else echo '結果はFALSEです。';

結果は

結果はFALSEです。
結果はFALSEです。
結果はFALSEです。

となります。

「 xor (排他的論理和) 」
 左辺オペランド と 右辺オペランド の どちらか が TRUE で、かつ、両方 が TRUE でない場合に TRUE を返します。

「 xor (排他的論理和) 」 結果がTRUEの場合は片方TRUEで両方TREUでない

//片方TRUEで両方TREUでない
if(TRUE xor FALSE) echo '結果はTRUEです。'; else echo '結果はFALSEです。';
echo "<br/>\n";
//片方TRUEで両方TREUでない
$a = 1;
$b = 2;
if(($a + $b === 3) xor ($b - $a === -1)) echo '結果はTRUEです。'; else echo '結果はFALSEです。';
echo "<br/>\n";
//片方TRUEで両方TREUでない
$a = 1;
$b = 2;
if(($a + $b === -3) xor ($b - $a === 1)) echo '結果はTRUEです。'; else echo '結果はFALSEです。';

結果は

結果はTRUEです。
結果はTRUEです。
結果はTRUEです。

となります。

「 xor (排他的論理和) 」 結果がFALSEの場合は両方TRUE

//両方TRUE
if(TRUE xor TRUE) echo '結果はTRUEです。'; else echo '結果はFALSEです。';
echo "<br/>\n";
//両方TRUE
$a = 1;
$b = 2;
if(($a + $b === 3) xor ($b - $a === 1)) echo '結果はTRUEです。'; else echo '結果はFALSEです。';
echo "<br/>\n";

結果は

結果はFALSEです。
結果はFALSEです。

となります。

「 ! (否定) 」
 右辺オペランド が、 TRUE でない場合に TRUE を返します。

「 ! (否定) 」 結果がTRUEの場合は右辺オペランドがFALSE

//右辺オペランドがFALSE
if(!FALSE) echo '結果はTRUEです。'; else echo '結果はFALSEです。';
echo "<br/>\n";
//右辺オペランドがFALSE
$a = 1;
$b = 2;
if(!($a + $b === -3)) echo '結果はTRUEです。'; else echo '結果はFALSEです。';

結果は

結果はTRUEです。
結果はTRUEです。

となります。

サンプルコード

– サンプル Click Here ! –

<h3>「and(論理積)」「&&(論理積)」 結果がTRUEの場合は左右両方TRUE</h3>
<?php
//左右両方TRUE
if(TRUE and TRUE) echo '結果はTRUEです。'; else echo '結果はFALSEです。';
echo "<br/>\n";
//左右両方TRUE
$a = 1;
$b = 2;
if(($a === 1) and ($b === 2)) echo '結果はTRUEです。'; else echo '結果はFALSEです。';
echo "<br/>\n";
//左右両方TRUE
$a = 1;
$b = 2;
if(($a + $b === 3) and ($b - $a === 1)) echo '結果はTRUEです。'; else echo '結果はFALSEです。';
?>



<h3>「and(論理積)」「&&(論理積)」 結果がFALSEの場合は左右片方FALSE</h3>
<?php
//左右片方FALSE
if(TRUE and FALSE) echo '結果はTRUEです。'; else echo '結果はFALSEです。';
echo "<br/>\n";
//左右片方FALSE
$a = 1;
$b = 2;
if(($a === 1) and ($b === -2)) echo '結果はTRUEです。'; else echo '結果はFALSEです。';
echo "<br/>\n";
//左右片方FALSE
$a = 1;
$b = 2;
if(($a + $b === 3) and ($b - $a === -1)) echo '結果はTRUEです。'; else echo '結果はFALSEです。';
?>



<h3>「or(論理和)」「||(論理和)」 結果がTRUEの場合は左右片方TRUE</h3>
<?php
//左右片方TRUE
if(TRUE or FALSE) echo '結果はTRUEです。'; else echo '結果はFALSEです。';
echo "<br/>\n";
//左右片方TRUE
$a = 1;
$b = 2;
if(($a === 1) or ($b === -2)) echo '結果はTRUEです。'; else echo '結果はFALSEです。';
echo "<br/>\n";
//左右片方TRUE
$a = 1;
$b = 2;
if(($a + $b === 3) or ($b - $a === -1)) echo '結果はTRUEです。'; else echo '結果はFALSEです。';
?>



<h3>「or(論理和)」「||(論理和)」 結果がTRUEの場合は左右両方TRUE</h3>
<?php
//左右両方TRUE
if(TRUE or TRUE) echo '結果はTRUEです。'; else echo '結果はFALSEです。';
echo "<br/>\n";
//左右両方TRUE
$a = 1;
$b = 2;
if(($a === 1) or ($b === 2)) echo '結果はTRUEです。'; else echo '結果はFALSEです。';
echo "<br/>\n";
//左右両方TRUE
$a = 1;
$b = 2;
if(($a + $b === 3) or ($b - $a === 1)) echo '結果はTRUEです。'; else echo '結果はFALSEです。';
?>



<h3>「or(論理和)」「||(論理和)」 結果がFALSEの場合は両方FALSE</h3>
<?php
//両方FALSE
if(FALSE or FALSE) echo '結果はTRUEです。'; else echo '結果はFALSEです。';
echo "<br/>\n";
//両方FALSE
$a = 1;
$b = 2;
if(($a === -1) or ($b === -2)) echo '結果はTRUEです。'; else echo '結果はFALSEです。';
echo "<br/>\n";
//両方FALSE
$a = 1;
$b = 2;
if(($a + $b === -3) or ($b - $a === -1)) echo '結果はTRUEです。'; else echo '結果はFALSEです。';
?>



<h3>「xor(排他的論理和)」 結果がTRUEの場合は片方TRUEで両方TREUでない</h3>
<?php
//片方TRUEで両方TREUでない
if(TRUE xor FALSE) echo '結果はTRUEです。'; else echo '結果はFALSEです。';
echo "<br/>\n";
//片方TRUEで両方TREUでない
$a = 1;
$b = 2;
if(($a + $b === 3) xor ($b - $a === -1)) echo '結果はTRUEです。'; else echo '結果はFALSEです。';
echo "<br/>\n";
//片方TRUEで両方TREUでない
$a = 1;
$b = 2;
if(($a + $b === -3) xor ($b - $a === 1)) echo '結果はTRUEです。'; else echo '結果はFALSEです。';
?>



<h3>「xor(排他的論理和)」 結果がFALSEの場合は両方TRUE</h3>
<?php
//両方TRUE
if(TRUE xor TRUE) echo '結果はTRUEです。'; else echo '結果はFALSEです。';
echo "<br/>\n";
//両方TRUE
$a = 1;
$b = 2;
if(($a + $b === 3) xor ($b - $a === 1)) echo '結果はTRUEです。'; else echo '結果はFALSEです。';
echo "<br/>\n";
?>



<h3>「!(否定)」 結果がTRUEの場合は右辺オペランドがFALSE</h3>
<?php
//右辺オペランドがFALSE
if(!FALSE) echo '結果はTRUEです。'; else echo '結果はFALSEです。';
echo "<br/>\n";
//右辺オペランドがFALSE
$a = 1;
$b = 2;
if(!($a + $b === -3)) echo '結果はTRUEです。'; else echo '結果はFALSEです。';
?>
実行結果
「and(論理積)」「&&(論理積)」 結果がTRUEの場合は左右両方TRUE
結果はTRUEです。
結果はTRUEです。
結果はTRUEです。

「and(論理積)」「&&(論理積)」 結果がFALSEの場合は左右片方FALSE
結果はFALSEです。
結果はFALSEです。
結果はFALSEです。

「or(論理和)」「||(論理和)」 結果がTRUEの場合は左右片方TRUE
結果はTRUEです。
結果はTRUEです。
結果はTRUEです。

「or(論理和)」「||(論理和)」 結果がTRUEの場合は左右両方TRUE
結果はTRUEです。
結果はTRUEです。
結果はTRUEです。

「or(論理和)」「||(論理和)」 結果がFALSEの場合は両方FALSE
結果はFALSEです。
結果はFALSEです。
結果はFALSEです。

「xor(排他的論理和)」 結果がTRUEの場合は片方TRUEで両方TREUでない
結果はTRUEです。
結果はTRUEです。
結果はTRUEです。

「xor(排他的論理和)」 結果がFALSEの場合は両方TRUE
結果はFALSEです。
結果はFALSEです。

「!(否定)」 結果がTRUEの場合は右辺オペランドがFALSE
結果はTRUEです。
結果はTRUEです。

– サンプル Click Here ! –


タグ(=記事関連ワード)

日付

投稿日:2011年10月31日
最終更新日:2014年02月26日

関連記事

配列関数サンプル

このカテゴリの他のページ

この記事へのコメント

トラックバックurl

http://www.tryphp.net/phpref-operators_logical/trackback/