【PHP】これで分かる関数! – 変数操作関数その2 –

PHP

更新履歴

更新日更新者更新内容
2021/8/23JJI・”はじめに”の段落を追加
・サンプルプログラムの実行結果に画面の画像を追加

はじめに

サンプルプログラムの中で次の記事で載せている関数を使用している場合があります。

型チェック

型チェックでよく使用する次の関数についてサンプルプログラムを使って説明します。

説明説明(PHPマニュアル抜粋)
empty変数が空であるかどうかを検査する
is_array変数が配列かどうかを検査する
is_bool変数が boolean であるかを調べる
is_float変数の型が float かどうか調べる
is_int変数が整数型かどうかを検査する
is_null変数が null かどうか調べる
is_numeric変数が数字または数値形式の文字列であるかを調べる
is_object変数がオブジェクトかどうかを検査する
is_string変数の型が文字列かどうかを調べる
isset変数が宣言されていること、そして null とは異なることを検査する

サンプルプログラム1

is_で始まる型チェック関数を使用したサンプルプログラムです。

<?php
    // 引数の値への厳密な型付け
    declare(strict_types = 1);
    // 共通ライブラリの読み込み
    require_once __DIR__ . "../../../lib/sample_common.php";

    // サンプルのクラス
    class SampleObj {
        private $num;
        private $str;
    }

    echo "ファイル名:" . basename(__FILE__) . "<br>\n";
    echo "【PHP】変数操作:型チェック関数<br>\n";

    // オブジェクト
    $sample_obj = new SampleObj();

    // 各種データの配列
    $mix_ary =[true, 0, "1.5", ["1", "2"], $sample_obj, 12.5, null, "あああ"];

    // 型チェック関数
    for($i = 0; $i < count($mix_ary); $i++) {
        // gettype()関数を使用してis_xxxx()関数を呼び出す
        $var = $mix_ary[$i];
        $datatype = strtolower(gettype($var));
        if($datatype === "boolean") {
            $func = "is_bool";
        } else {
            $func = "is_" . $datatype;
        }

        if($func($var)) {
            echo $i . ":$func(" . "):" . $datatype . ":<br>\n"; 
        }
    }
    echo "<br>\n";
?>

実行結果です。

・画面

・HTML

ファイル名:sample02_07_02.php<br>
【PHP】変数操作:型チェック関数<br>
0:is_bool():boolean:<br>
1:is_integer():integer:<br>
2:is_string():string:<br>
3:is_array():array:<br>
4:is_object():object:<br>
5:is_double():double:<br>
6:is_null():null:<br>
7:is_string():string:<br>
<br>

サンプルプログラム2

empty()、is_null()、isset()関数を使用したサンプルプログラムです。

<?php
    // 引数の値への厳密な型付け
    declare(strict_types = 1);
    // 共通ライブラリの読み込み
    require_once __DIR__ . "../../../lib/sample_common.php";

    echo "ファイル名:" . basename(__FILE__) . "<br>\n";
    echo "【PHP】変数操作:型チェック関数2<br>\n";

    // チェック対象の配列
    $mix_ary =[null, "", [], true, false, 0, 1, "0"];

    // 0、""、false、null、[](空の配列)はemptyと判定される
    echo "emptyの処理結果<br>\n";
    disp_result($mix_ary, "empty");

    // nullのみ、true
    echo "is_nullの処理結果<br>\n";
    disp_result($mix_ary, "is_null");

    // issetの場合、null以外はtrueと判定
    echo "issetの処理結果<br>\n";
    disp_result($mix_ary, "isset");

    // チェック関数
    function disp_result(array $ary, string $func_name) {
        for($i = 0; $i < count($ary); $i++) {
            $func = $func_name;

            if(preg_match("/empty|isset/", $func_name) === 1) {
                $func = "is_" . $func_name;
            }
    
            if($i != 0) {
                echo " ";
            }
            echo $i . ":";

            if($func($ary[$i])) {
                echo "$func_name:";
            } else {
                echo "${func_name}以外:";
            }
        }
        echo "<br>\n";
    }

    // emptyは可変関数で呼び出さないため、ラッパー関数
    function is_empty($var) :bool {
        return empty($var);
    }

    // issetは可変関数で呼び出さないため、ラッパー関数
    function is_isset($var) :bool {
        return isset($var);
    }
?>

実行結果です。

・画面

・HTML

ファイル名:sample02_07_04.php<br>
【PHP】変数操作:型チェック関数2<br>
emptyの処理結果<br>
0:empty: 1:empty: 2:empty: 3:empty以外: 4:empty: 5:empty: 6:empty以外: 7:empty:<br>
is_nullの処理結果<br>
0:is_null: 1:is_null以外: 2:is_null以外: 3:is_null以外: 4:is_null以外: 5:is_null以外: 6:is_null以外: 7:is_null以外:<br>
issetの処理結果<br>
0:isset以外: 1:isset: 2:isset: 3:isset: 4:isset: 5:isset: 6:isset: 7:isset:<br>

コメント