PHP入門

#目次
1. [変数](#number_one)
2. [演算子](#number_two)
3. [配列](#number_three)
4. [制御構造](#number_four)
5. [関数](#number_five)

<a name="number_one"></a>
#1.変数
変数とは、値や文字列を格納できる箱と覚えましょう。
変数を利用するにあたっての基本的な使い方について説明します。
変数を使用する際は、`$変数名 = 値;`の基本構文を守りましょう。
また、変数名やこのあと学ぶ関数名には[キャメル記法・スネーク記法](https://project-flora.net/2015/12/25/%E3%82%AD%E3%83%A3%E3%83%A1%E3%83%AB%E3%82%B1%E3%83%BC%E3%82%B9vs%E3%82%B9%E3%83%8D%E3%83%BC%E3%82%AF%E3%82%B1%E3%83%BC%E3%82%B9%E8%AB%96%E4%BA%89%E3%81%AB%E3%81%AF%E3%81%86%E3%82%93%E3%81%96%E3%82%8A/)が用いられます。これらは、プログラミング言語によって異なるため、必ず新しいプログラミング言語を使用する際はグーグル先生に聞きましょう。PHPでは、変数名はスネーク記法を使用し、関数名にはキャメル記法を使用します。
そして、変数名や関数名を作成するときは、コメントで補足説明をするか、変数名で何を表しているかわかるように記述しましょう。

```php
<?php
    $hoge = '変数を格納する';
    echo $hoge;
    
```

<a name="number_two"></a>
#2.演算子
|算術演算子||
|:-:|:--|
|\$a + $b |\$aに$bを足す|
|\$a - $b |\$aから$bを引く|
|\$a * $b |\$aに$bをかける|
|\$a / $b |\$aに$bを割る|
|\$a % $b |\$aを$bで割った余り|

|比較演算子||
|:-:|:--|
|\$a == $b |\$aと$bが等しいとtrue|
|\$a != $b |\$aと$bが等しくないならtrue|
|\$a < $b |\$aが$b未満のときtrue|
|\$a > $b |\$aが$bより大きいときtrue|
|\$a <= $b |\$aが$b以下のときtrue|
|\$a >= $b |\$aが$b以上のときtrue|

|代入演算子||
|:-:|:--|
|\$a = $b |\$aに$bを代入する|

|文字列演算子||
|:-:|:--|
|\$a . $b |\$aと$bを結合する|

|複合演算子||
|:-:|:--|
|\$a += $b |\$a+\$bの演算結果を$aに代入する|
|\$a -= $b |\$a-\$bの演算結果を$aに代入する|
|\$a *= $b |\$a*\$bの演算結果を$aに代入する|
|\$a /= $b |\$a/\$bの演算結果を$aに代入する|

|論理演算子||
|:-:|:--|
|\$a && $b |\$aと\$bが共にtrueのときtrue|
|\$a ll \$b |\$aと\$bの少なくともどちらか一方がtrueのときtrue|
|!$a |\$aがtrueでないとtrue|

##2.1 文字列の連結
文字列と他の文字列を連結し、新しい文字列を作成する処理
は、PHPに限らずWebサイトを作成するプログラミング言語でよく使います。
PHP上では、文字列を連結させるには`.`を用います。

```php
<?php
    echo 'Hello,' . 'world';
    //実行結果: Hello,world
    
```


##2.2自己代入演算子
代入演算子に特定の演算子を付加することで、自己代入演算子にすることができる。

文字連結に関する演算子を`.=`で表す。

```php
<?php
    $hoge = 'hoge';
    $hoge .= ' fuga';
    echo $hoge;  //hoge fuga 

```

計算に関する演算子は四則演算の演算子を代入演算子の前に付加することで、変数に入ってる値と他の値とで計算することができる。

```php
<?php
    $hoge = 10;
    $hoge += 2;  // 10 + 2 = 12
    $hoge -= 8;  // 12 - 8 = 4
    $hoge /= 2;  // 4 / 2 = 2
    $hoge *= 8;  // 2 * 8 = 16
    $hoge %= 2;  // 16 % 2 = 0

```

<a name="number_three"></a>
#3.配列
配列は、キーと値からなる要素を管理するもので、値を複数保持するので変数の箱を何個も持っているタンスというふうに覚えましょう。
また、配列を使用するときはarray()の中に値を入れます。

##3.1 配列
配列はキーがないので、それぞれの段には上から0,1,2,...というindex番号振られます。

```php
<?php
    $hoge = array('hoge', 'fuga', 'hogehoge');
    echo $hoge[0];  //hoge
    echo $hoge[1];  //fuga
    echo $hoge[2];  //hogehoge

```


##3.2 連想配列
連想配列と配列はほぼ同じ形であるが、連想配列は、キーを持つ配列である。先ほど習った配列では、index番号が振られていたが、連想配列ではそのindex番号を任意の文字列などに変更することができる。
連想配列を用いるには、`"キー" => "値"`の組み合わせで使われる。

```php
<?php
    $hoge = array('key1' => 'value1', 'key2' => 'value2', 'key3' => 'value3');
    echo $hoge['key1'];  //value1
    echo $hoge['key2'];  //value2
    echo $hoge['key3'];  //value3

```

<a name="number_four"></a>
#4.制御構造
この制御構造では、ある条件によって処理を変えたり、同じ処理を繰り返し実行したいときに用います。この制御構造を用いることでいろいろ可能性・可用性が広がります。
##4.1 条件分岐
> if, elseif, else

`if`, `elseif`, `else`を用いて条件分岐を行う制御文をif文と言います。
ifは、英語のifの意味のとおり、「もし...だったら」という構文です。
if文の条件1に合えば処理1を実行し、条件2に合えば処理2を実行、という具合に実行されます。

```php
<?php
    if(条件1){
    	//条件1に合う処理1
    } elseif(条件2){
    	//条件2に合う処理2
    } else{
    	//条件1と条件2に合わない処理
    }

```

if文は、上から順に条件に合うかどうかの判断を行うということです。条件にあったところの処理を実行するため、もし、そのあとに条件に合った処理があってもその処理は実行されないので、その順番には気をつけなければいけません。

■入れ子(ネスト)
条件1と条件2が合う場合の処理を実行させたい場合にネストを用います。
ネストはいくつでも重ねることができる。ネストを用いることで条件を細分化することが可能になる。

```php
<?php
    if(条件1){
        if(条件2){
            //条件1と条件2に合う場合の処理
        } else{
            //条件1に合い、条件2に合わない場合の処理
        }
    } else{
        //条件1に合わない場合の処理
    }

```

> switch

```php
<?php
    switch(条件){
        case A : 
        //case A の場合の処理1
        break;
        
        case B : 
        //case B の場合の処理2
        break;
        
        case C : 
        //case C の場合の処理3
        break;
        
        default : 
        //どのcaseにも合わない場合の処理
    }

```

switch文は、条件があり、caseを上から順に試行し合うcaseの処理を行います。またそれぞれのcaseにある`break`は、switch文の閉じタグ`}`までジャンプするという意味です。
switch文で最終的にどのcaseにも合わない場合はdefaultブロックで記述した処理が実行されます。
ちなみに、どのプログラム言語にもありますが、先ほど紹介した`break`と`continue`というものがあります。
continueは、現在の周回のみをスキップして、繰り返し処理を行うというものです。簡単にいうと、breakの逆で繰り返し文の始めに戻ると覚えておくといいです。

##4.2 繰り返し文
繰り返し文は同じ処理を行いたいときに用います。どのプログラミング言語でもよく使う構文です。
>while

```php
<?php
    while(条件){
        //処理
    }

```
whileは条件がtrueの間は同じ処理が繰り返され、falseになると、繰り返しが終了します。
while文はその条件に対して何らかのアクションをしないと無限ループが行われてしまうので気をつけましょう。なので、必ず条件に対して処理をかけて繰り返し文が終わるようにしましょう。
例)

```php
<?php
    while($a <= 3){
    	echo $a;
    	$a++;
    }

```

この例では、条件が「変数\$numが3以下の場合」、処理に「echo文でブラウザ表示し、\$a++を行う」を実行している。
`$a++`は、`$a += 1`と同義です。

> for

for文もwhile文同様繰り返し文の制御構文です。

```php
<?php
    for(変数の初期化; 繰り返しが継続する条件; 変数の増減){
        //処理
    }

```

例)

```php
<?php
    for($a = 0; $a <= 3; $a++){
        echo $a;
    }

```

上記のプログラム例は、while文で示したプログラム例と同じ処理を行っている。
for文は、何回繰り返し処理するのかがはっきりしているので、繰り返し回数が既知の時はfor文を用いたほうが簡単に書くことができます。

> foreach

while文やfor文はある条件が成り立つ時に繰り返し処理を行うという構文でした。これに対してforeach文は、配列に対しての繰り返し処理を行う場合に使います。

```php
<?php

    //配列と連想配列で使用可能
    foreach(配列の変数 as $value){
        //処理
    }
    
    //連想配列のみ使用可能
    foreach(配列の変数 as $key => $value){
        //処理
    }

```

例)

```php
<?php
    $sakurai = array('name' => 'hoge', 'nation' => 'japan', 'age' => 120);
    foreach($sakurai as $value){
    	echo $value . " ";
    }
    
    //実行結果 : hoge japan 120 

```

配列で繰り返し文を用いる時は、このforeachを用いたほうが処理が簡単になるので、これを使っていきましょう。

<a name="number_five"></a>
#5.関数
関数とはあるまとまった処理を関数としてまとめ、その関数を使用したい時に呼び出して使用します。
関数には、組み込み関数と自作関数があります。使い方は同じですが、組み込み関数はあらかじめ定義されている関数で、自作関数は自分で定義した関数のことを言います。
戻り値は、関数の実行結果で、値は数値や文字列、論理値などが返ってきます。
##5.1 組み込み関数
組み込み関数とは、あらかじめ定義されている関数のことで、PHPには、数多くの組み込み関数が用意されています。そのため、全てを覚えることはできないと思うので、PHPの組み込み関数についてのリファレンスを参照しましょう。

[PHP組み込み関数のリファレンス](http://alphasis.info/php/built-in-functions/)

##5.2 自作関数

同じ処理を書くのはソースの無駄、時間の無駄ですから、プログラマーとしては避けたい。
そういうときに、よく出てくる処理をまとめておいて、いつでも呼び出せるようにしておくために作るのが自作関数 ＝ ユーザー定義関数です。

> ユーザー定義関数の定義の仕方

```php
<?php
	function 関数名(引数1, 引数2, ... ){
		処理1;
		処理2;
	}

```

>ユーザー定義関数の呼び出しの仕方

```php
<?php
	関数名(引数1, 引数2, ... );

```

##5.3 戻り値
関数に値を渡す時は引数を用いますが、その逆に、関数で処理を行った結果を呼び出し元に返すときには「戻り値」を用います。

具体的には、return文で戻り値を指定してあげます。

> 戻り値の指定の仕方

```php
<?php
	//...
	return 戻り値;
	//...

```

■ 戻り値を用いる際の注意点
return文が関数内で実行され、戻り値を返すと、処理はそこで終了する。
戻り値として返すことのできる値は一つのみです。ですが、配列を戻り値として指定できるので、複数の値を返すことも可能である。