PHP ビルドイン関数を学ぼう

#PHP の ビルドイン関数

phpには私たちが全てを１から実装しなくても良いように、
初めから用意されている関数がたくさんあります。

それらをビルトイン関数といいます。

ビルトイン関数はたくさんあります。
今回はいくつか紹介します。

#はじめに
これは初心者エンジニアから、フルスタックエンジニアになるための備忘録である:point_up:

#目次
１ strlen
２ str_replace
３ count
４ asort,arsort
５ strip_tags
６−１ array_push
６−２ array_push関数で連想配列に値を追加する
７ array_merge
８ time,mktime
９ date


##１ strlen : 文字の長さを取得する

```php
<?php
$string = "ABCDEF";
echo strlen($string);
//=> 6 と表示される
?>
```

##2 str_replace : 文字列を置換する

```php

<?php

$string = "I love Ruby!";

// Ruby という文字列を　PHP に置換する 最初に変える文字 ▶︎その後に置換する文字 ▶︎ 元の書式（変数）
$new_string = str_replace("Ruby", "PHP", $string);


echo $new_string;
//=> I love PHP!
?>
```

##3 count : 配列の要素の個数を取得する

```php

<?php
$array = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
echo count($array);
//=> 10 と表示される
?>
```

##4 asort, arsort : 配列をソート（並び替え）する
```php

<?php
$array = array(2, 5, 9, 7, 3, 1, 8, 6, 4);

// 配列を昇順（小さい順）にソートする
asort($array);
// print_rで表示する
print_r($array);
//=> Array
//=> (
//=>     [5] => 1
//=>     [0] => 2
//=>     [4] => 3
//=>     [8] => 4
//=>     [1] => 5
//=>     [7] => 6
//=>     [3] => 7
//=>     [6] => 8
//=>     [2] => 9
//=> )
//=> と表示される。

// $array を降順(大きい順)にソートする
arsort($array);
// print_rで表示する
print_r($array);

//=> Array
//=> (
//=>     [2] => 9
//=>     [6] => 8
//=>     [3] => 7
//=>     [7] => 6
//=>     [1] => 5
//=>     [8] => 4
//=>     [4] => 3
//=>     [0] => 2
//=>     [5] => 1
//=> )
//=> と表示される
?>
```
##5 strip_tags : 文字列から HTML および PHP タグを取り除く

```php

<?php
// $strに<h１>と<p>を定義する
$str = "<h1>strip_tags関数</h1>" . "<p>タグ取り除きます。</p>";
echo strip_tags($str) . "\n";
// strip_tags関数タグ取り除きます。と表示される
?>

<!-- 取り除かないタグを指定してみる-->

<?php
$str = <<<EOM
    <h1>strip_tags関数</h1>
    <p>タグを取り除きます。</p>
    EOM;
var_dump(strip_tags($str, "<p>"));
// string(54) "strip_tags関数<p>タグを取り除きます。</p>"と表示される
?>

```

##６-1 array_push：1つ以上の要素を配列の最後に追加

```
<?php
$fruits = ['apple', 'orange', 'melon'];

// <!-- array_pushを使用して要素を追加する -->
array_push($fruits, "banana", "pineapple");
// print_rで＄fruitsを表示させる
print_r($fruits);

// 以下のように表示される
// Array
// (
//     [0] => apple
//     [1] => orange
//     [2] => melon
//     [3] => banana
//     [4] => pineapple
// )
?>

```
###６−2 array_push関数で連想配列に値を追加する
キーと値がペアで設定されている多次元配列や連想配列では、array_push関数を使用して要素を追加しようとしても、配列に値を追加してくれません。
要素を追加しても、配列$fruitsには値は追加されません。
多次元配列や連想配列に要素を追加する方法はいくつかありますが、
array_push関数を使用する場合は、配列をキーと値の１次元配列に分離する必要があります。
値とキーの配列にそれぞれ要素を追加したあとに配列を結合して多次元配列を作成します。
以下に連想配列をarray_push関数を使用して、値を追加する方法を記述します。

```php
<?php
$fruits = [0 => 'apple', 1 => 'orange', 2 => 'pineapple'];

//連想配列をキーと値１次元配列に分解する
foreach ($fruits as $key => $value) {
    $fruits_key[] = $key;
    $fruits_val[] = $value;
}

//キーと値の配列それぞれに値を追加する
array_push($fruits_key, 3, 4);
array_push($fruits_val, 'banana', 'pineapple');

//array_combineでキーと値の配列をマージする
$fruits = array_combine($fruits_key, $fruits_val);

print_r($fruits);
?>

```

##7 array_merge : 配列を結合する

```php
<?php
//配列を作成
$array1 = [1, 2, 3];
$array2 = [10, 20, 30];
$array3 = [100, 200, 300];

//配列を結合する
$array = array_merge($array1, $array2, $array3);

print_r($array);

// 実行結果
// Array
// (
//     [0] => 1
//     [1] => 2
//     [2] => 3
//     [3] => 10
//     [4] => 20
//     [5] => 30
//     [6] => 100
//     [7] => 200
//     [8] => 300
// )
?>

<!-- 文字列配列の場合 -->
<?php
//配列を作成
$fruits1 = ['apple', 'orange', 'melon', 'banana', 'pineapple'];
$fruits2 = ['strawberry', 'cherry', 'watermelon'];
$fruits3 = ['anzu', 'papaya'];

//配列を結合する
$fruits_merge = array_merge($fruits1, $fruits2, $fruits3);

print_r($fruits_merge);

// 実効結果
// Array
// (
//     [0] => apple
//     [1] => orange
//     [2] => melon
//     [3] => banana
//     [4] => pineapple
//     [5] => strawberry
//     [6] => cherry
//     [7] => watermelon
//     [8] => anzu
//     [9] => papaya
// )
?>
```

##8 time, mktime：UNIXタイムスタンプの取得と日時の操作

```php
<?php
<!-- 現在のタイムスタンプを取得 -->
echo `現在のUnixタイムスタンプ`.time();

echo '\n';

<!-- 三日後のタイムスタンプを取得 -->
$nweek = time() + (3 * 24 * 60 * 60 );
echo "三日後のUnixタイムスタンプ：".$nweek;

// 実行結果
現在のUnixタイムスタンプ：1505454884
3日後のUnixタイムスタンプ：1505714084
?>
```
time関数で取得した値はint型であるため、以下のように日時を比較するときに便利。

```php
<?php
//現在のタイムスタンプを取得
$time1 = time();

//3日後のタイムスタンプを取得
$time2 = time() + (3 * 24 * 60 * 60);

if($time1 < $time2){
echo '$time2が大きい値です';
}

// 実行結果
$time2が大きい値です

?>
```
時刻の比較は、一定の日付までのデータを取得したり、時刻によって処理を分岐するときによく使用される。
time関数と同じく、UNIXタイムスタンプを取得する関数としてmktime関数がある
time関数との違いとしては、time関数は現在時刻のUNIXタイムスタンプを取得することができるのに対し、
mktime関数は指定した日時のUNIXタイムスタンプを取得することができるという点が挙げられる。

```php
<?php
//指定した日時のタイムスタンプを取得
$timestamp = mktime(0, 0, 0, 8, 1, 2017);
echo $timestamp;

// 実行結果
1501545600

?>
```

しかし、実際はUXIXタイムスタンプがwebサービスで表示されている所はみたことがないと思います。
time関数やmktime関数で取得したUNIXタイムスタンプは、
次に紹介するdate関数を使用することにより指定したフォーマットで日時として取得することができます

##9 date：任意の形式でフォーマットし、日付文字列を返す

```php
<?php
//現在の日時を取得
echo date('Y/m/d', time());

echo '<br>';

//3日後のタイムスタンプを取得
$nweek = time() + (7 * 21 * 60 * 60);

//3日後の日時を取得
echo date('Y/m/d', $nweek);

// 実行結果
2017/09/15
2017/09/21

?>
```

#まとめ
以上で主に使用される関数紹介を終了いたします。
私もまだまだ勉強が必要なので、これから自分がエンジニアになるため必要だぁなと思ったことは、
Qiitaにどんどん乗っけていきたいと思います！
それでは！