PHP文法基礎まとめ１

#はじめに
PHP初心者向けに基礎内容をまとめました。
PHP文法基礎まとめ２は[こちら](https://qiita.com/WorldLab5/items/0bac9cfaa61985e15aaa)

##基礎・データ型
###文字の出力・連結
echoを使うことにより、文字を出力することができ、「.」で文字を連結することができます。echoの場合は「,」で連結することもできます。

```php
echo 'hello world! ';
echo 'hello'.' world!! ';
echo 'hello', ' world!!!';
```

```
hello world! hello world!! hello world!!!
```
###変数・データ型
PHPの場合、先頭に$をつけて変数を宣言します。変数へデータを格納することにより、以降のソースコードで変数の中身を参照することができます。
変数に適用される、主なデータ型は下記のようになっています。
・文字 ⇒ string型
・数値 ⇒ int型、float型
・真偽値（true / false） ⇒ boolean型

```php
$num = 100;
$str = 'PHP基礎';
$bool = true;

echo 'num = '. $num . '<br>';
echo 'str = '. $str . '<br>';
echo 'bool = '. $bool . '<br>';
```

```
num = 100
str = 'PHP基礎'
bool = 1
```
###コメント
コメントは、ソースコードの目的や説明を正しく伝えるために記述します。コメントを記述しておくことで、他の人が内容を理解するのに役立ちます。
1行コメントする場合は、行頭に「//」を使用します。複数行コメントする場合はコメント範囲を「/* */」で囲みます。

```php
// hello worldを出力する
echo 'hello world1';

/*
　echo 'hello world2';
　echo 'hello world3';
*/
```

```
hello world1
```
###四則演算
データの演算を行うには、以下の演算子を使用します。

```php
$num1 = 100 + 200;
$num2 = 200 - 100;
$num3 = 100 * 2;   // 掛け算
$num4 = 200 / 10; // 割り算
$num5 = 10 % 3;    // 余り

echo 'num1 = '. $num1 . '<br>';
echo 'num2 = '. $num2 . '<br>';
echo 'num3 = '. $num3 . '<br>';
echo 'num4 = '. $num4 . '<br>';
echo 'num5 = '. $num5 . '<br>';
```

```
num1 = 300
num2 = 100
num3 = 200
num4 = 20
num5 = 1
```
###論理演算子
・論理積（&&もしくはand） ⇒ 左右の式が共にtrueであればtrue
・論理和（||もしくはor） ⇒ 左右の式のどちらかがtrueであればtrue
・否定（!） ⇒ trueであればfalseに、falseであればtrueになる

```php
$a = (true && false);
$b = (true || false);
$c = !true;

echo 'a = ', var_dump($a), '<br>';
echo 'b = ', var_dump($b), '<br>';
echo 'c = ', var_dump($c), '<br>';
```

```
a = bool(false)
b = bool(true)
c = bool(false)
```

###定数
定数は変更のできない値です。原則大文字で定義します。

```php
define('MAX_VALUE', '1.0');
echo 'MAX_VALUE = '. MAX_VALUE
```

```
MAX_VALUE = 1.0
```
##制御構造
###条件分岐(if文)
if文の中に条件を作り、YesかNoかによって処理を分けることができます。
Yesであれば直後の処理を通り、Noの場合はelseを通ります。elseifで再度条件を作ることもできます。

```php
$age = 25;

if ($age <= 20){
  echo 'under 20';
}elseif ($age >= 25){
  echo 'over 25';
}else{
  echo '21 - 24';
}
```

```
over 25
```
###条件分岐(switch文)
switch文は一致する値があれば、該当するcaseの処理を通ります。
全てのcaseに該当しない時は、最後のdefaultの処理を通ることになります。

```php
$age = 25;

switch ($age){
  case 20:
    echo 'hit 20!';
    break;
  case 25:
    echo 'hit 25!';
    break;
  default:
    echo 'no hit!';
    break;
}
```

```
hit 25!
```
###ループ処理(for文)
for文は決まった回数分処理を繰り返したい場合に使用します。
以下では、処理が1回繰り返すごとに$valの値が1ずつ増加し、5を超えた時にループを抜けます。

```php
for($val = 1; $val <= 5; $val++){
  echo 'val = '. $val . '<br>';
}
```

```
val = 1
val = 2
val = 3
val = 4
val = 5
```
###ループ処理(while文)
while文は指定した条件がtrueの間は処理を繰り返し行います。
以下では、処理が1回繰り返すごとに$valの値が1ずつ増加し、5を超えた時にループを抜けます。

```php
$val = 0;

while ($val < 5) {
  echo 'val = '. $val . '<br>';
$val++;
}
```

```
val = 0
val = 1
val = 2
val = 3
val = 4
```

##配列
###配列
配列は複数のデータを一つの名前で管理したい時に使います。
[]で括る書き方は、array()の書き方を省略したもので、同じ意味になります。

```php
$colors = array("red","blue","yellow");
$colors2 = ["red","blue","yellow"];

echo 'colors[0] = '. $colors[0] . '<br>';
echo 'colors[1] = '. $colors[1] . '<br>';
echo 'colors2[0] = '. $colors2[0] . '<br>';
echo 'colors2[1] = '. $colors2[1] . '<br>';
```

```
colors[0] = red
colors[1] = blue
colors2[0] = red
colors2[1] = blue
```
###連想配列
連想配列とは、配列の添え字に数値以外のデータ型(主に文字列)を使用した配列のことを言います。

```php
$members = [
  'name' => 'tanaka',
  'age' => 20
];
echo 'name = '. $members['name'] . '<br>';
echo 'age = '. $members['age'] . '<br>';
```

```
name = tanaka
age = 20
```
###list
配列の内容を複数の変数へ代入を行います。
[]を使えば省略して記述することができ、配列とlistの変数の数が一致しない場合は、一致する値が順番に代入されます。

```php
list($a, $b, $c) = array("red","blue","yellow");
[$d, $e] = array("red","blue","yellow");

echo "a = $a<br>";
echo "b = $b<br>";
echo "c = $c<br>";
echo "d = $d<br>";
echo "e = $e<br>";
```

```
a = red
b = blue
c = yellow
d = red
e = blue
```

##関数
###関数
関数は、複数の処理を一つにまとめたものです。functionで定義し、引数と戻り値が存在します。

```php
function hello(){
  echo 'Hello ';
  echo 'World!' . '<br>';
}

function hello2($name){
  $str = "Hello $name";
  return $str;
}

hello();
$ret = hello2('yamada');
echo $ret;
```

```
Hello World!
Hello yamada
```

以上です。