独習PHP学習メモ（Chapter3-比較演算子・論理演算子）

[PHP8技術者認定初級試験取得](https://www.phpexam.jp/summary/novice8)を目指しており、無事合格できました！

資格試験用に学習した、公式の認定教材である[独習PHP第4版](https://www.amazon.co.jp/dp/4798168491/)の内容を知識定着のためアウトプットした記事です。


:::note info
過去の投稿はこちら
:::

https://qiita.com/mumucochimu/items/1607809dc28dd026df6d

https://qiita.com/mumucochimu/items/316dd9c83bda14fdfaf8

https://qiita.com/mumucochimu/items/a5ddce721847e863d9d3

https://qiita.com/mumucochimu/items/ec0c589db180ee185656

## 比較演算子

左辺と右辺の値を比較し、true / false を返します。
参考：https://www.php.net/manual/ja/language.operators.comparison.php

主な比較演算子は以下です。

| # | 演算子 | 概要   |
|:-----:|:-----:|:-----|
| [①](#①==) | ==     | 左辺と右辺の値が等しい場合はtrue |
| [②](#②===) | ===    | 左辺と右辺の値が等しい、かつデータ型が同じ場合はtrue |
| [③](#③!=) | !=     | 左辺と右辺の値が等しくない場合にtrue |
| [④](#④!==) | !==    | 左辺と右辺の値が等しくない、またはデータ型が同じではない場合にtrue |
| [⑤](#⑤<>) | <>     | 左辺と右辺の値が等しくない場合にtrue　 |
| [⑥](#⑥<) | <      | 左辺が右辺より小さい場合にtrue |
| [⑦](#⑦>) | >      | 左辺が右辺より大きい場合にtrue |
| [⑧](#⑧<=) | <=     | 左辺が右辺以下の場合にtrue |
| [⑨](#⑨>=) | >=     | 左辺が右辺以上の場合にtrue |
| [⑩](#⑩?:) | ?:    | 条件演算子（詳細は後述） |
| [⑪](#⑪??) | ??     | 条件演算子（詳細は後述） |

#### ①==
左辺と右辺の値が等しい場合はtrueを返す。
データ型が違っても等しいとみなす。

```PHP
7 == 7    // 結果：true
7 == 5    // 結果：false
7 == '7'  // 結果：true
```

#### ②===

左辺と右辺の値が等しい、かつデータ型が同じ場合はtrueを返す。
`==`よりも厳密なチェックができる。

```PHP
7 === 7    // 結果：true
7 === 5    // 結果：false
7 === '7'  // 結果：false
```

#### ③!=

左辺と右辺の値が等しくない場合にtrueを返す。

```PHP
7 != 7    // 結果：false
7 != 5    // 結果：true
7 != '7'  // 結果：false
```

#### ④!==

左辺と右辺の値が等しくない、またはデータ型が同じではない場合にtrueを返す。

```PHP
7 !== 7    // 結果：false
7 !== 5    // 結果：true
7 !== '7'  // 結果：true
```

#### ⑤<> 

左辺と右辺の値が等しくない場合にtrueを返す。
（③と同じ挙動）

```PHP
7 <> 7    // 結果：false
7 <> 5    // 結果：true
7 <> '7'  // 結果：false
```

#### ⑥<

左辺が右辺より小さい場合にtrueを返す。

```PHP
7 < 10    // 結果：true
7 < 5    // 結果：false
7 < '10'  // 結果：true
```

#### ⑦>

左辺が右辺より大きい場合にtrueを返す。

```PHP
7 > 10    // 結果：false
7 > 5    // 結果：true
7 > '10'  // 結果：false
```

#### ⑧<=

左辺が右辺以下の場合にtrueを返す。

```PHP
7 <= 10    // 結果：true
7 <= 7    // 結果：true
7 <= 5    // 結果：false
7 <= '7'  // 結果：true
```

#### ⑨>=

左辺が右辺以上の場合にtrueを返す。

```PHP
7 >= 10    // 結果：false
7 >= 7    // 結果：true
7 >= 5    // 結果：true
7 >= '7'  // 結果：true
```

#### ⑩?:

「条件式 ? 式1 : 式2」という構文で、条件式がtrueなら式1を返す、falseなら式2を返す。

```PHP
$score = 75;
print $score >= 70 ? '合格だよ!' : '残念だったね。不合格';  // 結果：合格だよ！
```

#### ⑪??

式がnullでないなら式1を返す、nullなら式2を返す。
**null合体演算子** とも呼ばれる。

```PHP
$message = 'Hello!';
print $message ?? 'Hi!';  // 結果：Hello!
```

## 論理演算子

複数の条件式を論理的に結合し、その結果をtrue / false で返します。
比較演算子と組み合わせて利用するのが一般的。

参考：https://www.php.net/manual/ja/language.operators.logical.php

主な論理演算子は以下です。

#### &&

左右の式が共にtrueである時にtrueを返す。（論理積）

```PHP
// $x = true;
// &y = false;
$x && $y  // 結果：false
```

左辺がfalseであった場合はその時点で評価を終えるため、右辺は評価されない。

#### and

左右の式が共にtrueである時にtrueを返す。（論理積）

```PHP
// $x = true;
// &y = false;
$x and $y  // 結果：false
```

左辺がfalseであった場合はその時点で評価を終えるため、右辺は評価されない。

#### ||

左右の式のいずれかがtrueである時にtrueを返す。（論理和）

```PHP
// $x = true;
// &y = false;
$x || $y  // 結果：true
```

左辺がtrueであった場合はその時点で評価を終えるため、右辺は評価されない。

#### or

左右の式のいずれかがtrueである時にtrueを返す。（論理和）

```PHP
// $x = true;
// &y = false;
$x or $y  // 結果：true
```

左辺がtrueであった場合はその時点で評価を終えるため、右辺は評価されない。

#### xor

左右の式のいずれかがtrueであり、かつ、双方ともにtrueではない場合にtrueを返す。（排他的論理和）

```PHP
// $x = true;
// &y = false;
$x xor $y  // 結果：true
```

#### !

式がtrueの場合はfalse、falseの場合はtrueを返す。（否定）

```PHP
// $x = true;
!$x  // 結果：false
```

今回はここまで。
次も独習PHP学習メモを投稿します！