初学者の人は見なきゃやばい！　PHPの条件分岐(初学者の方向け)

# はじめに
PHPの基本をこの記事で書いていきます。
PHPの初学者の方向けの記事です。実際にコードを書いたりして
実際の挙動などを確認してみてください。

# 環境
MAMPをインストールします。
エディタはVScodeです。

# 環境構築方法
MAMPの環境構築が動画でわかりやすく載っていました。
PHPで出力する時はMAMPで出力するのでこちらを確認してください。

https://www.youtube.com/watch?v=I9xgwLfNnD4&list=PLErg7aSNT21xAVbJAEWS1oxgGLL__ySK2


# バージョン
以下のバージョンで挙動を確認しました。

![スクリーンショット 2022-03-31 1.32.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1748789/a3a83f23-1ba1-6e36-7d77-7d8531989048.png)

# 条件分岐
これは***もし〜なら〜で処理する***みたいな仮定法みたいなイメージです。
webサービスでもよく使われます。
代表的なもので下のようなものがあります。

ex)
if, for, foreach, switch, while, do-while 

## if文
よく使うif文を書いていきます。
書き方は以下の通りです。
```php
<?php 

if (条件式) {
//条件式が真の時実行
}
?>
```

年齢に当てはめてみていきます。
```php
<?php
$age = 28;

if($age > 20){
    echo "あなたは". $age. "歳なので大人です。<br>";
}
//あなたは28歳なので大人です。
```
***.は文字の連結***です。

```php
$height = "170"; .//文字
var_dump($height);

if($height === 170){　　//基本===
    echo "私の身長は". $height. "cmです。";
}
//int(170) 私の身長は170cmです。
```
文字や数字を判定しやすい用に```===```を基本使います。

### 条件式が偽になる時は?
falseになる時の条件があります。

ex) 0,　null,　空文字,　メンバ変数のオブジェクトが0

```php
$age = 0;

if($age > 20){
    echo "あなたは". $age. "歳なので大人です。";
}
//何も出力されない
```

## if else文
if文だけでは足りないのでそこで、```else```が出てきます。

```php
$age = 27;

if($age > 30){
    echo "あなたは". $age. "歳なのでベテランです。<br>";
}else {
    echo "あなたは". $age. "歳なので若手です。<br>";
};

//あなたは27歳なので若手です。
```
上の意味は30歳より上ではない場合は若手ですとなります。
***elseより上の処理が真でない場合に実行***される文です。

## if 　else if  　else文
ifとelseだけだと処理をかける数が限られてしまいます。
そこで```else　if```文があります。

```php
$age = 20;

if($age > 30){
    echo "あなたは". $age. "歳なのでベテランです。<br>";
}else if($age >=  25)  {
    echo "あなたは". $age. "歳なので若手です。<br>";
} else if($age >= 20) {
    echo "あなたは". $age. "歳なので新人です。<br>";
} else {
    echo "あなたは". $age. "歳なのでルーキーです。<br>";
}

//あなたは20歳なので新人です。
```
else ifを使ったことでいろいろな条件式が書けました。

### elseを使う時の注意
elseはあまり使わない方がいいみたいです。
理由はif文が増えて、else if, elseなどがいっぱいになり読みづらくなるからです。

if文単体の方が見やすくなってきます。



# 条件分岐の演算子
条件分岐で使われえる論理演算子を見ていきます。

## 実務でよく使う比較演算子
参考動画に実務でよく使う比較演算子があったのでリストにしておきます。

|比較演算子|使用例|例の意味|
|--|--|--|
|==|A == B|AとBの値が等しい|
|===|A === B|AとBの値または型も等しい|
|!=|A! = B|AとBの値が等しくない|
|!==|A! == B|AとBの値または型が等しくない|
|>|A > B|BよりAが大きい|
|>=|A >= B|BよりAが大きいか等しい|

これを使ってコードを書いていきます。
```php
$height = 180;

if($height !==  170) {  
    echo "身長は170センチではない。";
}

//身長は170センチではない。
```
身長が170センチではない時に実行されます。

最後に付き合いたい女性のプログラムの実行結果です。
```php
$looks = "美人じゃない";
$style = "おしゃれじゃない";
$personality = "性格がいい";

if($looks === "美人"){
    echo "美人な人と付き合いたい<br>";
} else if($style === "おしゃれ"){
    echo "おしゃれな人と付き合いたい<br>";
} else if($personality === "性格がいい"){
    echo "性格がいい人と付き合いたい<br>";
}else {
    echo "この人とは付き合わない<br>";
}

//性格がいい人と付き合いたい
```

### データがあるかどうかの確認
データが入っているかどうかの確認をする時に、以下の3つの関数があります。

|関数|意味|
|--|--|
|isset|変数に値がはいっているかどうかを確認する関数|
|empty|引数に与えた変数や配列の中身が空かどうか確認する関数|
|is_null|変数がNULLかどうか確認します。変数がNULLならTRUE、それ以外は FALSE を返す。|

⚫︎is_nullの補足
変数が未定義の時もTRUE を返しますが、未定義の確認はisset() を使ったほうがいいみたいです。


まずissetを使っていただきます。
```php
$check = "確認";
if(isset($check)){
    echo "変数は確認です。<br>";
}
//変数は確認です。
```
変数が存在するのかを確認します。



次にemptyを使ってみます。
```php
$check = "";
if(empty($check)){
    echo "変数は空です。<br>";
}

//変数は空です。
```
もし変数にjなど何か入力すれば出力はされません。


最後にis_nullです。

```php
$check = null;
if(is_null($check)){
    echo "変数はnullです。<br>";
}

//変数はnullです。
```


## 論理演算子
論理演子が全くわからない方は都合によりこちらの記事で確認お願いします。

https://techacademy.jp/magazine/18798

## 論理演算子を使ってみる
付き合いたい女性プログラムを書いて例を見ていきます。

```php
$looks = "美人";
$personality = "性格がいい";

if ($looks === "美人" && $personality === "性格がいい" ){
   echo "この人と付き合いたい<br>";
}

//この人と付き合いたい
```
if文のところで、***美人かつ性格がいい***人と付き合いたいと意味になります。
```&&はAかつB```という意味です。

もし性格が悪いにすると

```php
$looks = "美人";
$personality = "性格が悪い";

if ($looks === "美人" && $personality === "性格がいい" ){
   echo "この人と付き合いたい<br>";
}
```
***何も表示されません。***

もしここでできれば美人がいいけど、美人でなくても性格が良ければいいとなると
```php
$looks = "美人";
$personality = "性格が悪い";

if ($looks === "美人" || $personality === "性格がいい" ){
   echo "この人と付き合いたい<br>";
}

//この人と付き合いたい
 ```
***美人または性格がいい***人ならいいとなります。
```||はAまたはb```という意味です。

## 三項演算子
if else文を１行で書ける特徴を持つのが三項演算子です。

```php
//三項演算子
//if else文
//条件　? 真　: 偽

$toeic = 800 ;
$result = $toeic > 700 ? "会社が欲しい英語力<br>" : "なくてもいい英語力<br>";

echo $result;
//会社が欲しい英語力
```
TOEICの点数が700点より上なら会社が欲しい英語力かどうかのプログラムです。

# Switch文
if文を書き換えでswitch文を書くことができます。

下がswitch文の書き方です。
```php
switch(変数){
    case "" :
        //実行内容
        break;
    case "" :
        //実行内容
        break;
    case "" :
        //実行内容
        break;
    default:   //else
    //実行  
}
```

if文と比較しながらみていきます。
サッカー選手のプログラムを書いていきます。

⚫︎i文
```php
//if文
$playing_team = "バルセロナ";

if($playing_team === "FC東京"){
    echo "日本のJリーグでプレイしています。<br>";
}else if($playing_team === "バルセロナ"){
    echo "スペインリーグでプレイしています。<br>";
}else if($playing_team === "リバプール"){
    echo "イングランドでプレイしています。<br>";
}else {
    echo "無所属<br>";
}

//スペインリーグでプレイしています。
```

⚫︎switch文
```php
//switch文
$playing_team = "バルセロナ";

switch($playing_team){
    case "FC東京":
        echo "日本のJリーグでプレイしています。<br>";
        break;
    case "バルセロナ";
        echo "スペインリーグでプレイしています。<br>";
        break;
    case "リバプール";
        echo "イングランドでプレイしています。<br>";
        break;
    default;   //elseに該当
        echo "無所属<br>";
}

 //スペインリーグでプレイしています。
```

⚫︎注意点
***break;を入れないと処理が止まらないので、処理をしたくないとこまで処理が実行されてしまいます。***

比較してみるとswitch文はみやすいですよね。
プログラムを書く時に、***自分と他人が読みやすいコードを書くことが大事***です。








# PHPが全くわからない人向けの記事
https://qiita.com/Hashimoto-Noriaki/items/3d89e79c1f031afc7b96

https://qiita.com/Hashimoto-Noriaki/items/9ba6af2960a6d8d6342f

https://qiita.com/Hashimoto-Noriaki/items/0d9b2f03ec165e3452b8

https://qiita.com/mackeyTA/items/069900b5c2366fb30e3a

# 参考資料
https://www.youtube.com/watch?v=blHD40R3VJE&list=PLErg7aSNT21xAVbJAEWS1oxgGLL__ySK2&index=3