10. ビルトイン関数

ビルトイン関数とは

プログラム言語があらかじめ用意している関数(メソッド)ビルトイン関数といいます。ビルトイン関数は今までの学習でも利用しています。

   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つ調べてプログラムしてみてください。

PHP超入門