PHPのビルトイン関数【ドットインストールより】
ドットインストールで学習したビルトイン関数についてまとめておきます。
■ビルトイン関数とは
PHPにあらかじめ組み込まれている関数。
■ビルトイン関数の種類をネットで探す方法
URL欄に以下を指定する。
文字列 関数 site:php.net
■ビルトイン関数の種類
– strlen / mb_strlen
指定した文字列の長さを取得する。
strlen('hello') ⇒ 5
– number_format
3桁毎にカンマ区切りにした値を取得する。
number_format(12345678) ⇒ 12,345,678
– shuffle
実行するたびに配列の順番をランダムに入れ替えた配列を取得する。
shuffle([1, 2, 3, 4]) ⇒ [2, 4, 1, 3]
– array_unique
配列を渡すと、重複した要素を取り除いた配列を取得する。
array_unique([1, 1, 2, 2, 3, 4, 4]) ⇒ [1, 2, 3, 4]
– sprintf
文字列として値を表示する。
$name = 'Apple'; $score = ''32.246; sprintf("[%15s] [%10.2f]", $name, $score); ⇒ [(半角スペース10個)Apple] [(半角スペース5個)32.24]
$name = 'Apple'; $score = ''32.246; sprintf("[%-15s] [%010.2f]", $name, $score); ⇒ [Apple(半角スペース10個)] [0000032.24]
– printf
値を表示する。
$name = 'Apple'; $score = ''32.246; printf("[%-15s] [%010.2f]", $name, $score); ⇒ [Apple(半角スペース10個)] [0000032.24]
– trim
前後の空白、改行を除去した値を取得する。
$input = trim(' dot_install '); echo $input; ⇒ dot_install
– strpos / mb_strpos
⇒文字列の検索(対象の文字列が含まれるか)を行う。
$input = 'abc_def'; echo strpos($input, '_') . PHP_EOL; ⇒ 3
– str_replace
⇒文字列を置換する。
(utf-8なら全角日本語も扱える。)
$input = '123_456'; $input = str_replace('_', '-', $input); ⇒ 123-456
– substr(文字列, 位置, 桁数)
⇒文字列の中から指定した位置の文字列を取得する。
$str = '20200401Test' $str2 = substr($str, 0, 8); ⇒20200401
– substr_replec(文字列, 位置, 桁数)
⇒位置と桁数を指定して文字列を置換する。
$str = '20200401Test' $str2 = substr_replace($str, '99', 4, 2); ⇒20209901
– preg_match / preg_match_all
⇒特殊な探索を行う。(preg_match_allは全て取得する)
$input = 'Call us at 01-1111-2222 or 02-4444-5555';
$pettern = '/\d{2}-\d{4}-\d{4}/'; --//の中に正規表現を書く
preg_match_all($pettern, $input, $matches);
print_r($matches);
⇒ Array
(
[0] => Array
(
[0] => 01-1111-2222
[1] => 02-4444-5555
)
)
– preg_replace
⇒条件を満たす文字列を置換する。
$input = 'Call us at 01-1111-2222 or 02-4444-5555'; $pettern = '/\d{2}-\d{4}-\d{4}/'; --//の中に正規表現を書く $input = preg_replace($pettern, '**-****-****', $input); echo $input . PHP_EOL; ⇒ Call us at **-****-**** or **-****-****
– implode
⇒配列を文字列に置換する。
$d = [2020, 08, 12]; echo "$d[0]-$d[1]-$[2]" . PHP_EOL; echo implode('-', $d) . PHP_EOL; ⇒ 2020-08-12 2020-08-12
⇒文字列を配列に置換する。
$t = '17:33:21'; print_r(explode(':', $t)); ⇒Array ( [0] => 17 [1] => 33 [2] => 21 )
– ceil
⇒小数点以下を切り上げる
$n = 5.623; echo ceil($n) . PHP_EOL; ⇒ 6
– floor
⇒小数点以下を切り捨てる
$n = 5.623; echo floor($n) . PHP_EOL; ⇒ 5
– round
⇒四捨五入を行う。
$n = 5.623; echo round($n) . PHP_EOL; --整数にする四捨五入 echo round($n, 2) . PHP_EOL; --小数点以下を2桁にする四捨五入 ⇒ 6 5.62
– mt_rand
⇒乱数を作成する。
echo mt_rand(1, 6); --1以上6以下のランダムな整数値を生成
⇒ 1~6のランダムな整数値
– max
⇒最大値を取得する。
echo max(1, 6, 2) . PHP_EOL; ⇒ 6
– M_PI
⇒円周率(定数)を取得する。
echo M_PI . PHP_EOL; ⇒ 3.141519...
– M_SQRT2
⇒平方根(定数)を取得する。
echo M_SQRT2 . PHP_EOL; ⇒ 1.4142...
– array_unshift / array_push
⇒配列の先頭に要素を追加する。/ 配列の末尾に要素を追加する。
$scores = [30, 40, 50]; array_unshift($scores, 10, 20); array_push($scores, 60, 70); $scores[] = 80; print_r($scores); ⇒ Array ( [0] => 10 [1] => 20 [2] => 30 [3] => 40 [4] => 50 [5] => 60 [6] => 70 [7] => 80 )
– array_shift
⇒配列の先頭要素を削除する。
$scores = [30, 40, 50]; array_shift($scores); print_r($scores); ⇒Array ( [0] => 40 [1] => 50 )
– array_pop
⇒配列の末尾要素を削除する。
$scores = [30, 40, 50]; array_pop($scores); print_r($scores); ⇒Array ( [0] => 30 [1] => 40 )
– array_slice(配列, 位置, 個数)
⇒配列の要素を切り出す。
$scores = [30, 40, 50, 60, 70];
$partial = array_slice($scores, 2, 3);
$partial = array_slice($scores, 2); --最後までを指定
print_r($partial);
⇒Array
(
[0] => 50
[1] => 60
[2] => 70
)
$scores = [30, 40, 50, 60, 70];
$partial = array_slice($scores, -2); --後ろから-1, -2,...
print_r($partial);
⇒Array
(
[0] => 60
[1] => 70
)
– sort / rsort
⇒配列をソートする。(sortは昇順、rsortは降順)
$scores = [40, 20, 50, 30]; sort($scores); print_r($scores); ⇒Array ( [0] => 20 [1] => 30 [2] => 40 [3] => 50 )
– shuffle
⇒配列をランダムに並び替える。
$scores = [40, 20, 50, 30];
shuffle($scores);
print_r($scores);
⇒Array ※ランダム
(
[0] => 50
[1] => 30
[2] => 20
[3] => 40
)
– array_rand(配列, ピックアップ数)
⇒配列からランダムに指定数ピックアップする。
※ただし取得できるのは「キー」
$scores = [40, 20, 50, 30]; $wk = array_rand($scores, 2); --キーを2つ取得する echo $scores[$wk[0]] . PHP_EOL; --値を表示する echo $scores[$wk[1]] . PHP_EOL; --値を表示する ⇒20 ※ランダム 50
– array_fill(開始位置, 個数, 埋める値)
⇒開始位置から埋める値が個数の配列を生成する。
$scores = array_fill(0, 5, 10); print_r($scores); ⇒ Array ( [0] => 10 [1] => 10 [2] => 10 [3] => 10 [4] => 10 )
– range(開始数値, 終了数値 [, 刻む数値])
⇒開始数値から終了数値までの配列を[刻む数毎に]生成する。
$scores = range(1, 10); print_r($scores); ⇒ Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 [5] => 6 [6] => 7 [7] => 8 [8] => 9 [9] => 10 )
– array_sum(配列)
⇒配列の全要素の合計を取得する。
$scores = range(1, 10); echo array_sum($scores) . PHP_EOL; ⇒ 55
– max / min
⇒配列の最大要素(最小要素)を取得する。
$scores = range(1, 10); echo max($scores) . PHP_EOL; echo min($scores) . PHP_EOL; ⇒ 10 1
– array_merge(配列1, 配列2)
⇒配列1の後に配列2を連結した新しい配列を作って返す。
$ary1 = [1, 2, 3];
$ary2 = [4, 5, 6];
$ary3 = array_merge[($ary1, $ary2);
$ary3 =[...$ary1, ...$ary2]; --展開でも意味は同じ
print_r($ary3);
⇒ Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[4] => 5
[5] => 6
)
– array_diff(配列1, 配列2)
⇒配列1から配列2にある要素を引いた新しい配列を作って返す。
$ary1 = [3, 4, 8]; $ary2 = [4, 8, 10]; $ary3 = array_diff[($ary1, $ary2); printf_r(ary3); ⇒ Array ( [0] => 3 )
$ary1 = [3, 4, 8]; $ary2 = [4, 8, 10]; $ary3 = array_diff[($ary2, $ary1); printf_r(ary3); ⇒ Array ( [0] => 10 )
– array_unique(配列1, 配列2)
⇒配列1と配列2から重複した要素を削除して新しい配列を作って返す。
$ary1 = [3, 4, 8]; $ary2 = [4, 8, 10]; $ary3 = array_merge[($ary1, $ary2); printf_r(ary3); ⇒ Array ( [0] => 3 [1] => 10 )
– array_intersect(配列1, 配列2)
⇒配列1と配列2の共通要素で新しい配列を作って返す。
$ary1 = [3, 4, 8]; $ary2 = [4, 8, 10]; $ary3 = array_merge[($ary1, $ary2); printf_r(ary3); ⇒ Array ( [0] => 10 )
– array_map($fn, $a)
⇒配列$aの全要素に対してコールバック関数$fnを適用して新しい配列を作って返す。
//2倍する関数
function kakeru2($n)
{
return ($n * 2);
}
$a = [1, 2, 3, 4, 5];
$b = array_map('kakeru2', $a);
printf_r($b);
⇒ Array
(
[0] => 2
[1] => 4
[2] => 6
[3] => 8
[4] => 10
)
– array_filter($a, $fn)
⇒配列$aの全要素に対してコールバック関数$fnでフィルタリングて新しい配列を作って返す。
※フィルタリングとは、条件に合致しない要素をはじくという意味。
//渡された整数が奇数かどうか返す関数
function checkKisu($val)
{
return $val & 1;
}
$a = ['a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5];
$b = array_filter($a, "checkKisu");
printf_r($b);
⇒ Array
(
[1] => 1
[c] => 3
[e] => 5
)