【PHP】 ビルトイン関数 基礎
ビルトイン関数とは
あらかじめPHPに組み込まれている関数のこと。
例えばこんなもの
・文字列を渡すと、文字列の長さを返す
strlen ( 'apple' ) →5
・大きな数値を渡すと、3桁ごとにカンマを入れる
number_format ( 12345678 ) →1,235,678
・配列を渡すと、実行するたびシャッフルする
shuffle ( [1,2,3,4] ) →[2,4,3,1]
・配列を渡すと、重複した要素を取り除く
array_unique ( [2,2,5,7,7, ) →[2,5,7]
sprintf ( ) , printf ( )
sprintf:フォーマットされた文字列を返す(出力するにはechoが必要)
printf:フォーマットされた文字列を(返すだけでなく)出力する
<?php
$num = 5;
$location = 'table';
$format = 'There are %d apples in the %s';
echo sprintf($format, $num, $location);
//printf($format, $num, $location); //同じ内容が出力される
?> → There are 5 apples in the table と出力
値を埋め込む箇所にデータ型に応じた記号を書く。
文字列:%s 整数:%d 浮動小数点数:%f
strlen ( ) , trim ( ) , strpos ( ) , str_replace ( )
<?php
$input = ' abc_napi ';
$input = trim($input);
→ $inputの前後の空白や改行を除去
echo strlen($input); → 8と出力
→ $inputの文字数を出力
echo strpos($input, '_'); → 3と出力
→$inputの中から'_'を探し、何文字目にあるかを出力
※位置は0から始まることに注意
$input = str_replace('_', '-', $input);
→ '_'を'-'に変える
echo $input; → abc-napiと出力
mb_strlen( ) , mb_strops( )
日本語を扱う際は、以下のように別の関数を使う。
strlen ( ) → mb_strlen( )
strpos ( ) → mb_strops( )
情報の桁数が決まっている固定長データ
substr( )
<?php
$input = '20210223food-A 12000';
$date = substr($input, 0, 8); //$inputの0文字目から8桁分
$food = substr($input, 8, 6); //$inputの8文字目から6桁分
$amount = substr($input, 14);
//最後までの場合は、何桁分という引数を省略できる
echo $date; → 20210223と出力
echo $food; → food-Aと出力
echo number_format($amount); → 12,000と出力
substr_replace( )
<?php
$input = '20210223food-A 12000';
$input = substr_replace($input, 'food-B', 8, 6);
→ $inputの8文字目から6桁分をfood-Bに置き換える
特定のパターンの文字列を検索・置き換え
preg_match( ), preg_match_all( )
<?php
$tel = 'Call us at 06-1111-2222 or 06-3333-4444';
$type = '/\d{2}-\d{4}-\d{4}/';
preg_match($type, $tel, $matches); → 最初に見つかった結果を出力
preg_match_all($type, $tel, $matches); → 見つかった全ての結果を出力
// (検索したいパターン, 検索したい文字列, 検索結果を格納する変数)を引数とする
preg_replace( )
<?php
$tel = 'Call us at 06-1111-2222 or 06-3333-4444';
$type = '/\d{2}-\d{4}-\d{4}/';
$tel = preg_replace($type, '**-****-****', $tel);
// (パターン, 置き換え後の文字列, 検索したい文字列)
echo $tel; → Call us at **-****-**** or **-****-****と出力
配列を連結する
implode( )
<?php
$today = [2021, 2, 24];
echo "$today[0]-$today[1]-$today[2]";
echo implode('-', $today);
// (区切り文字, 配列名)
→ どちらも2021-2-24と出力
文字列を配列の要素にする
explode( )
<?php
$time = '21:40:15';
print_r (explode(':', $time));
// (区切り文字, 配列名)
→ Array ( [0] => 21 [1] => 40 [2] => 15 )と出力
数学系の関数
<?php
$n = 1.2435;
echo ceil($n); →2 //小数点以下を切り上げ
echo floor($n); →1 //小数点以下を切り下げ
echo round($n); →1 //小数点以下を四捨五入
echo round($n, 2); →1.24 //小数点以下が2桁になるよう四捨五入