PHP基本集

#PHPとは
自分の学習用です:santa_tone1:

**PHP**は、Web開発に特化したプログラミング言語で、「PHP: Hypertext Preprocessor」の略称。

**・Webサービスの開発やWebアプリの開発
（集客サイト・SNS・ECサイト・社内の情報共有システムなど）
・WordPressのカスタマイズ・テーマの作成
・データベースに接続してデータの登録・削除・取得**
等の他、様々な開発が出来る。

###記述方法

####【<?php ~ ?>タグ】
<?php ~ ?>タグの中にPHPの命令を記述していく。

例）

```php
<?php echo '<h2>PHP</h2>'; ?>
```
上記のコードがデベロッパーツール上においては、下記の様にHTMLに変換されて表示されていることが確認出来る。

```html
<h2>PHP</h2> 
```
また**文末にはセミコロン;を付ける**こと

```php
// ←コメントアウトする場合はスラッシュ２つを左翼に記述する
```
　　
####【echo】

文字列を出力するための命令文であり、PHPが標準で備えている関数の一つ。
出力する文字列などはシングルクォーテーションもしくはダブルクォーテーションで囲むこと。

```php
<?php echo 'こんにちは'; ?>
<?php echo "こんばんわ"; ?>
```

また、数値を出力する場合おいては、シングルクォーテーションもダブルクォーテーションもつけないこと。
```php
<?php echo 100; ?> //出力結果：100
<?php echo 5 + 5; ?> //出力結果：10
```
  
  
  
####【変数定義】
PHPにおいて変数を定義又は使用する際は、変数名の冒頭に「**＄**」マークを付けること。

```php
<?php
  $name = "おはよう"
  echo $name; 
  //出力結果：おはよう
?>  

<?php
  $a = 5;
  $b = 10;
  echo $a + $b;
  //出力結果：15
?>  
```

####【++,--】

変数に１を足したり引いたりするときのみ、++や--を使用することが出来る。

```php
<?php
  $x += 1; //変数に１を足す
  $x -= 1; //変数に１を引く
  
  $x++;    //変数に１を足す
  $x--;    //変数に１を引く
?>
```
また、＋＋や--を変数の前と後に付けるかで出力結果が違ってくる。
変数の前に付けた場合、出力前にその文の計算を行う。
変数の後に付けた場合は、出力後にその文の計算を行う。

```php
<?php
  $x = 3;

  echo ++$x; //出力結果：4
  echo $x++; //出力結果：3(変数自体は出力後に4となる)
?>
```

####【文字列の連結】
**ドット「.」**を使用して文字列を連結することが出来る。

```php
<?php
  $MyName = 'taro';
  echo $MyName.'です'; //出力結果：taroです

  $NotName = 'じゃないです';
  echo $MyName.$NotName; //出力結果：taroじゃないです
?>
```
また、**ドットイコール「.=」**を使用することによって、文字列の連結記述を省略することが出来る。

```php
<?php
  $zebra = '黒色';
  $zebra .= 'と白色';
  echo $zebra;  
  //出力結果：黒色と白色
?>
```

####【式展開】
**{}**に変数を入れることによって、文中で式展開をすることができる。
ただし、式展開を実行する文字列は**ダブルクォーテーションで囲む**こと。

```php
<?php
  $name = 'taro';
  echo "私の名前は{$name}です";
  //出力結果：私の名前はtaroです
?>
```

####【if文】
**条件式を()**で囲み、**処理を{}**で囲む。

```php
<?php
  $X = 5;
  if($X > 1){
    echo '$xは１より大きい';
  }
?>
<?php
  $X = 5;
  if(true){
    echo '条件はtrueである';
  }elseif(条件){
    echo '条件はelseifである';
  }else{
    echo '条件はelseである';
  }
?>

```
  
また、条件の**否定文**を記述する場合は、**条件式をさらに（）で囲み、冒頭に！**を付ける。
場合によっては二重括弧を省略出来るケースもある。


```php
<?php
  if(!(条件)){
    //処理内容
  }
  if(!$isOk) {
    //処理内容
  }
?>
```
####【switch文】
条件分岐が多く且つ複雑な場合は、if文よりも**switch文**を記述する方が可読性が上がる。
条件式には「**case 〇〇:**」を用い、条件に該当するcase文が実行される。
〇〇には文字列や数値を記述する。
break文を記述していない場合、後ろに続く他のcaseが続けて続行されてしまう。

```php
<?php
  switch(条件) {
    case 0:
      //処理内容
      break;
    case 1:
      //処理内容
      break;
    case 2:
      //処理内容
      break;
    case 3:
      //処理内容
      break;
    default:  //いずれのcaseにも該当しない場合の処理は「default」を使って記述する
      //処理内容
      break;
  }
?>
```

####【配列】
配列を定義する場合は「array(　'　'　,　'　'　,　'　'　);」と記述することが出来る。
ただし、5.4以降からは、「**変数名 = [　'　'　,　'　'　,　'　'　]**」と、配列コンストラクタ「Array」を使う方法から**配列リテラル「[ ]」を使う方法が推奨**されている。


```php
//配列を定義
$colors = ['red','yellow','blue']; 

//配列の取り出し方
echo $colors[0]; //redが出力される

//配列の追加
$colors[] = 'green'; //配列の末尾に「green」を追加

//配列を上書き
$colors[0] = 'white'; //配列0番目に入れられていた「red」を「rainbow」に上書き
```

####【連想配列】
連想配列とは、**複数のデータをまとめて管理する**場合に使用される。
インデックスはなく、オブジェクトの様に**キーとバリュー（値）を定義**し、データ同士は**コンマ,**で区切る。

```php
<?php
  $human = [
    'age' => '20',
    'name' => 'taro',
    'from' => 'japan'
  ];

  //配列の取り出し
  echo $human['name']; //出力結果：taro

  //データの追加
  $human['language'] = 'japan'; //変数humanに「'language'=>'japan'」が追加された
?>
```

####【繰り返し処理】
繰り返し処理には「**for文**」を使用する。
**変数の初期化**を行い、次に繰り返すための**条件式**を記述、**変数値の更新**を記述していく。
()の中の条件式などは**セミコロン;**で区切ること。

```php
<?php
  for($i= 1, $i <= 100, $i++) {
    echo $i.'<br>';  //１から１００までが改行されながら出力される
  }
?>
```

####【while文】
for文と同様に繰り返し処理の一つ。
for文の様に予め変数の初期化や繰り返し処理を定義せず、繰り返しの条件のみを記述するので、変数の初期化や処理内容に繰り返しの処理は別記する必要がある。

例）２から１００までを繰り返し、偶数のみ出力。

```php
<?php;
  $i = 2;
  
  while($i <= 100) {
    if($i % 2 == 0) {
      echo $i.'<br>';
    }
  $i++;
    }
?>
```

また、break文を用いて、繰り返しの中断条件を記述することも出来る。
その場合はif文を用いることが多い。
他にも特定の条件に該当した場合のみ繰り返し処理をさせないための「**continue文**」もある。

例）1から1000まで繰り返させて出力させるが、501以上の数字を表示しないようにする。
また、３の倍数だけ出力させない処理を加える。

```php
<?php
  for($i = 1; $i <= 1000; $i++) {
    if($i > 500) {
      break; //５００より大きくなったら中断
    }

    if($i % 3 == 0) {
      continue;  //３の倍数の時だけループ処理を抜ける
    }

    echo $i.'<br>';
  }
?>
```

####【foreach文】
foreach文とは、配列または連想配列に対して、先頭のデータから順に繰り返し処理を行わせる命令である。

```php
<?php
  foreach(配列 as 値変数 ) {
    繰り返したい処理;
  }

  foreach(配列 as キー変数 => 値変数) { //キー変数は省略可能
    繰り返したい処理;
  }
?>
```

<img width="511" alt="スクリーンショット 2020-04-03 5.42.20.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/580388/2c7569fb-cce6-a7b1-75e8-edbb457d61f6.png">

```php
<?php
  $scores = ['数学' => 70, '英語' => 90, '国語' => 80];

    foreach($scores as $key => $value) {
      echo $key.'は'.$value.'点です'.'<br>';
    }

    //出力結果
 
    //数学の点数は７０点です
    //英語の点数は９０点です
    //国語の点数は８０点です
?> 
```

例）複数の連想配列が配列として入っている場合

```php  
<?php
$menus = [
  ['name' => 'パスタ', 'price' => 900],
  ['name' => 'ステーキ', 'price' => 1200],
  ['name' => '牛丼', 'price' => 600]
];

foreach($menus as $menu) {
  $price = $menu['price'];
  echo $menu['name'].'は'.$price.'円です';
  echo '<br>';

  $totalPrice += $price;
};

echo '合計金額は'.$totalPrice.'円です';

//出力結果

//パスタは900円です
//ステーキは1200円です
//牛丼は600円です
//合計金額は2700円です

?>
```

####【関数の呼び出し】
「**関数名（）;」**と記述する。
PHPには様々な処理を行うことが出来る関数が標準で用意されている。
例）

```php
<?php
  
  $ProgrammingLanguages = ['HTML', 'CSS', 'PHP'];
  
  // countを用いて要素数を出力
    
    echo count($ProgrammingLanguages);
?> 
```
####【関数の定義】
関数は「**function 関数名（） {処理内容}**」と記述することによって定義することが出来る。

例

```php
<?php
  function hello(){  //関数の定義
    echo 'Hello';
  };

  hello();  //関数の実行（Helloが出力される）
?>
```
また、関数には**引数**を渡して（値渡し）、処理の内容に加えることも出来ます。
引数の数は複数でも構いません。
処理の文中には、引数名と同名の**仮引数**を使用して処理内容を定義します。

<img width="545" alt="スクリーンショット 2020-04-03 19.43.14.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/580388/bab32dee-6909-c3db-67a8-1cef67826052.png">

```php

<?php    
  
  function printRectangleArea($height, $width) {
      echo $height * $width;
  };
    
  printRectangleArea(5, 10);  //出力内容：50
    
  ?>
```

####【戻り値とは】
定義した関数の処理結果を指定することが出来る。
この返す処理結果を**戻り値**と言い、「**return**」を使用する。

```php
<?php

  function getCircleArea($radius) { //関数を定義
    return $radius * $radius * 3;  
    //処理内容に記述している$radiusが仮引数である
    //returnを使用して戻り値（値を返す処理内容）を指定する
  };
    
  $circleArea = getCircleArea(5); //定義した関数に５を引数に指定して、戻り値を変数化
    
  echo $circleArea;  //変数の呼び出し
 
?>
```
####【FizzBuzz問題】
1から100までの数字を順番に表示させる。
ただし、
・その数が3で割り切れるなら、「Fizz」
・その数が5で割り切れるなら、「Buzz」
・その数が3でも5でも割り切れるなら、「FizzBuzz」をその数字の代わりに表示させる。

```php
<?php
  for($i = 1; $i <= 100; $i++) {
    if($i % 3 == 0 && $i % 5 == 0) {
      echo 'FizzBuzz'.'<br>';
      continue;
    } elseif($i % 3 == 0) {
      echo 'Fizz'.'<br>';
      continue;
    } elseif($i % 5 == 0){
      echo 'Buzz'.'<br>';
      continue;
    }
    echo $i.'<br>';
  }; 
?>
```
  
今回はここまで:santa: