ビルトイン関数とは
プログラム言語があらかじめ用意している関数(メソッド) をビルトイン関数といいます。ビルトイン関数は今までの学習でも利用しています。
echo() //文字を出力
print() //文字を出力
var_dump() //内容を表示(デバッグ用)
date() //日付取得
rand() //ランダム数取得
round() //四捨五入
ビルトイン関数の使い方
ビルトイン関数では PHPであらかじめ決められた名前を利用します。その名前を 関数名(メソッド名) といい、関数名のあとに ( ) をつけて実行します。
戻り値 = 関数名(引数)
引数と戻り値
関数の ( ) の中には、値を代入することもでき、これを 引数(ひきすう) といいます。関数を実行すると結果が返ってきますが、その結果を戻り値といい、関数によっては**戻り値がないものもあります。****
ビルトイン関数の例
echo() や date() などはビルトイン関数です。echo 特別に ( ) なしで書くことができます。PHP のビルトイン関数はここではたくさん用意されています。必要に応じてPHP公式サイトや Web検索してください。
<?php
date_default_timezone_set('Asia/Tokyo');
$date_string = date('Y-m-d H:i:s');
$random_number = rand(1, 6);
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<h2>日時</h2>
<p><?= $date_string ?></p>
<h2>サイコロ</h2>
<p><?= $random_number ?></p>
</body>
</html>
その他のビルトイン関数を使ってみましょう。まずは文字列に関するビルトイン関数です。
文字の長さ取得
strlen()
strlen() は文字の長さを取得します。
数値 = strlen(文字列)
文字列「Hello」の文字数を出力してみましょう。
<?php
$message_1 = "Hello";
$length_1 = strlen($message_1);
?>
...
<h2><?= $message_1 ?> の長さ</h2>
<p><?= $length_1 ?></p>
...
結果
Hello の長さ
5
日本語の取り扱いに注意
strlen() で日本語を取り扱う時、文字コード UTF-8 に基づいて3バイト文字で計算します。よって「こんにちは」を strlen() で処理すると 15(5 x 3)バイトの文字 になってしまいます。
$message_2 = "こんにちは";
$length_2 = strlen($message_2); //15バイトになってしまう
mb_strlen()
日本語などの全角文字(マルチバイト文字)の文字数取得は mb_strlen() を利用します。
数値 = mb_strlen(文字列)
マルチバイト文字の長さ
mb_strlen() でマルチバイト文字の長さを確認してみましょう。
<?php
$message_2 = "こんにちは";
$length_2 = mb_strlen($message_2);
?>
...
<h2><?= $message_2 ?> の長さ</h2>
<p><?= $length_2 ?></p>
...
結果
マルチバイトでも5文字になりました。
こんにちは の長さ
5
文字の部分取得
substr()
substr() は文字列の一部を取得します。substr() の引数に開始位置と取得する文字の長さ指定します。
文字列 = substr(文字列, 開始位置, 文字の長さ)
開始位置を指定する場合
「Hello,Tokyo」の文字を substr() で文字を抜き出してみましょう。 最初から5文字取得します。最初の場合は、開始位置が「0」となります。
<?php
$message_3 = "Hello,Tokyo";
?>
...
<!-- 最初から5文字取得 -->
<p><?= substr($message, 0, 5) ?></p>
...
結果
Hello
開始位置からすべての文字
開始位置からすべての文字を取得するには、開始位置だけ指定します。
<!-- 7文字目からすべて取得 -->
<p><?= substr($message, 6) ?></p>
Tokyo
後ろから取得
開始位置がマイナスの場合は、後ろから指定した文字の長さで取得します。
<!-- 後ろから5文字目からすべて取得 -->
<p><?= substr($message, -5) ?></p>
<!-- 後ろから6文字目から1文字取得 -->
<p><?= substr($message, -6, 1) ?></p>
Tokyo
,
mb_substr()
mb_substr() は substr() のマルチバイト対応です。
文字列 = mb_substr(文字列, 開始位置, 文字数)
開始位置や文字数はマルチバイト文字の位置にあたります。
$address = "東京都新宿区";
3文字目からすべて
<p><?= mb_substr($address, 3) ?></p>
新宿区
最初から3文字
<p><?= mb_substr($address, 0, 3) ?></p>
東京都
最後の2文字目から2文字
<p><?= mb_substr($address, -2, 2) ?></p>
新宿
文字の置換
str_replace()
str_replace() は文字列の中から文字を検索し、別の文字に置換します。マルチバイト文字も対応しています。
文字列 = str_replace(検索文字, 置換文字, 文字列);
「新宿」を「渋谷」に置換してみましょう。
<?php
$address = "東京都新宿区新宿";
$address_2 = str_replace('新宿', '渋谷', $address);
?>
...
<p><?= $address_2 ?></p>
...
結果
東京都渋谷区渋谷
is_null()
PHP では値をチェックする関数がいくつかありますが、その中でもよく使われる is_null(), isset(), empty() です。is_null() は値が NULL(何もない状態)かを判別します。
論理値 = is_null(値)
変数に空欄の文字を代入して if 文でtrue, falseの判別をしてみましょう。
$value = "";
if (is_null($value)) {
$result_1 = "NULL です。";
} else {
$result_1 = "NULL ではありません。";
}
HTML部分
<p><?= $result_1 ?></p>
結果
$value は文字列の空欄ですが NULL ではありません。
NULL ではありません。
NULL とは?
NULLはプログラムで「何もない」という状態で、「文字列が空欄」とは意味合いが違います。今度は、$value の値を null に変えて確認してみましょう。
$value = null;
結果
NULLが判別されました。
NULL です。
isset()
isset() は値が設定されてされているかを判別します。
$value = "";
if (isset($value)) {
$result_2 = '値が設定されています';
} else {
$result_2 = '値が設定されていません';
}
HTML部分
<p><?= $result_2 ?></p>
結果
文字列の空欄もデータがセットされていると判断します。
値が設定されています
empty()
empty() は値がない状態かを判別します。値はデータ型によって違いますが、以下の値はすべて空欄になります。
//文字列
$value = "";
//数値
$value = 0;
//bool
$value = false;
//配列
$value = [];
//NULL
$value = null;
if (empty($value)) {
$result_3 = '空欄です';
} else {
$result_3 = '空欄ではありません';
}
HTML部分
<p><?= $result_3 ?></p>
値が空欄にならないような $value をいろいろ設定して確認 してみましょう。
変数が未定義の場合
isset(), empty() は処理できる
isset() や empty() は変数がどこにも宣言していなくても処理できます。
if (isset($price)) {
//処理
}
if (empty($price)) {
//処理
}
is_null() はエラーになる
is_null() で変数が未定義の結果はどうなるでしょうか?
if (is_null($price)) {
//処理
}
結果
PHPのエラーになります。is_null() の場合は変数定義に注意しましょう。 エラーの出力はエラーレベルによります
Notice: Undefined variable: price in ...
演習
問題1
以下の変数をビルトイン関数を使って「雨」を「晴れ」にして表示してみましょう。
$message = '明日は雨です。';
問題2
以下のプログラムを実行すると「ユーザ名を入力してください」と表示されました。[あ]にビルトイン関数をあてはめてみましょう。
$user_name = "";
if ([あ]($user_name)) {
$message = "ユーザ名を入力してください";
}
echo $message;
echo PHP_EOL;
問題3
以下のビルトイン関数について調べて、データをチェックしてみましょう。
- is_numeric()
- is_int()
- is_float()
- is_string()
- is_bool()
例えば、is_int() であれば以下のようになります。
$number = 500;
if (is_int($number)) {
echo "整数です" . PHP_EOL;
}
結果
true
問題4
PHP のビルトイン関数をネットや書籍などで 2つ調べてプログラムしてみてください。