PHPの関数

# PHPの関数の種類
関数とはいくつかの処理を入れておくためのものです。
PHPには2種類の関数が存在します。
組み込み関数とユーザー定義関数があります。

## 組み込み関数
***あらかじめPHPで用意されている関数***です。

ex)計算,文字の整形,配列,データベースなど
下のリファレンスで色々調べることができます。

### PHP関数リファレンス
https://www.php.net/manual/ja/funcref.php

### 注意
関数の数が多すぎて、覚えることがほぼ不可能です。
覚えるのではなくやりたいことを言語化してすぐに調べられるようになる必要があります。


## 文字列関数
それぞれの文字列関数をみていきます。

⚫︎```strlen```
string(文字列)とlength(長さ)を合わせて、文字列の長さです。

```php
//文字列の長さ
$test = "test";
echo strlen($test);

//4
```
しかし日本語にすると9と出力されます。

```php
//文字列の長さ
$test = "テスト";
echo strlen($test);
//9
```
理由はマルチバイトでUTF-8というものがあり、日本語が1文字で３バイトから６バイトあるみたいです。
その影響で9と出力されています。

⚫︎```mb_strlen```
これはマルチバイトのlenght(長さ)という意味で、マルチバイトの長さを出します。
```php
$test = "テスト";
echo mb_strlen($test);
//3
```
mbは基本マルチバイト関連です。

⚫︎```str_replace```
文字列を置き換える時に使います。
```php
$test = "文字列の試験です";
echo str_replace("試験","テスト",$test);
//文字列のテストです
```

⚫︎```explode```
指定した文字列で分割する関数です。
```php
echo "<pre>";
$str =  "文字列を、分割する";
var_dump(explode("、",$str));
echo "</pre>";

//array(2) {
 //   [0]=>
 //   string(12) "文字列を"
 //   [1]=>
 //   string(12) "分割する"
 // }
```

⚫︎```implode```
配列で指定された複数の文字列を連結するための関数。
```php
$str2 = ["2022","04","07"];
echo implode("-",$str2);

//2022-04-07
```
```join```も同じように使えます。
```php
$date = ["2022","04","07"];
echo join("-",$date);

//2022-04-07
```

⚫︎```preg_match```
文字列から正規表現で指定したパターンにマッチした文字列を検索する関数。
```php
$string = "正規表現の文字列を確認する";

echo preg_match("/文字列/",$string);
//1
```

⚫︎```substr```
指定した文字列から文字列を取得。
```php
echo substr("ABCDEFG",0);
//ABCDEFG

echo "<br>";
echo substr("ABCDEFG",1);
//BCDEFG

echo "<br>";
echo substr("ABCDEFG",2);
//CDEFG
```

日本語を検索すると
```php
echo substr("さいたまけん",1);
//��いたまけん
```
文字化けするので、そこで```mub_substr```を使い、マルチバイトの関数を使います。
```php
echo mb_substr("さいたまけん",1);
//いたまけん
```

# 配列の関数
次に配列の関数を見ていきます。

⚫︎```array_push```
配列に配列を追加していきます。
```php
$animal = ["犬","猫","猿"];

array_push($animal,"ライオン","象");

echo "<pre>";
var_dump($animal);
echo "</pre>";

/*
array(5) {
    [0]=>
    string(3) "犬"
    [1]=>
    string(3) "猫"
    [2]=>
    string(3) "猿"
    [3]=>
    string(12) "ライオン"
    [4]=>
    string(3) "象"
  }
*/
```

⚫︎```array_pop```
配列の末尾を取る関数です。

```php
$animal = ["犬","猫","猿"];
array_pop($animal);

echo "<pre>";
var_dump($animal);
echo "</pre>";

/*
array(2) {
  [0]=>
  string(3) "犬"
  [1]=>
  string(3) "猫"
}
*/
```

⚫︎```array_shift ```
配列の先頭を取る関数
```php
$animal = ["犬","猫","猿"];
array_shift($animal);

var_dump($animal);

//array(2) { [0]=> string(3) "猫" [1]=> string(3) "猿" }
```

⚫︎```array_unshift```
配列の末尾に追加する関数

```php
$animal = ["犬","猫","猿"];
array_unshift($animal);

var_dump($animal,"ゴリラ");

//array(3) { [0]=> string(3) "犬" [1]=> string(3) "猫" [2]=> string(3) "猿" } string(9) "ゴリラ"
```

⚫︎```array_unique```
配列の重複を取り除く関数

```php
$number = array(100,300,500,100);
print_r(array_unique($number));

//Array ( [0] => 100 [1] => 300 [2] => 500 )
```

⚫︎```array_reverse```
配列の値の順序を逆にする関数
```php
$number = array(100,300,500,1000);
print_r(array_reverse($number));
//Array ( [0] => 1000 [1] => 500 [2] => 300 [3] => 100 )
```

⚫︎```array_slice```
第一引数の配列から連続した要素を切り取る配列関数

```php
$number = array(100,300,500,1000,2000);
$numbers = array_slice($number,0,3);

print_r($numbers);
//Array ( [0] => 100 [1] => 300 [2] => 500 )
```

まだ他にもたくさんあるので色々調べてください



### 配列関数のわかりやすい記事

http://html2php.starrypages.net/php/array-funcs


### 配列関数のリファレンス

https://www.php.net/manual/ja/book.array.php

# camelCaseとsnake_Case
上の２つをそれぞれ見ていきます。

⚫︎```camelCase```
***文字列の最初が小文字***
```php
studyProgrammingCode()
```

⚫︎```snake_Case```
***単語境界をアンダースコア(_)でつないだ文字列***
```php
study_programming_code()
```



# 参考資料
https://qiita.com/tokutoku393/items/7b3a2500f4d4c6c2463a

https://qiita.com/Tocyuki/items/282d49d2ae6e7eb96eca#implode