【PHP】変数の型を簡単に調べる4つの方法

PHP PHP
主にPHPに関する記事

PHPで変数の型を調べたいことがたまにあります。その際の調べかたをいくつか紹介します。

gettype関数

gettype()はプリミティブ型・組み込み型のデータ型のチェックを行うために使用します。

gettype(7);            // 'integer'
gettype(1.1);          // 'double'
gettype('Sample');     // 'string'
gettype([1 ,2]);       // 'array'
gettype(new stdClass); // 'object'

利用時の注意点

この関数はプリミティブ型や組み込み型は判定できますが、クラスなどになるとobjectとなってしまうため、get_class関数を利用する必要があります。

is_xxxx関数

プリミティブ型・組み込み型に関しては、型チェック用の関数が数多く用意されています。

関数説明
is_array()変数の型が配列かどうかを調べる
is_bool()変数の型が真偽値かどうかを調べる
is_float()変数の型が float かどうかを調べる
is_int()変数が整数型かどうかを調べる
is_null()変数の型がnullかどうかを調べる
is_numeric()変数の型が数字または数値形式の文字列であるかを調べる
is_object()変数の型がオブジェクトかどうかを調べる
is_resource()変数の型がリソースかどうかを調べる
is_scalar()変数の型がスカラ1かどうかを調べる
is_string()変数の型が文字列かどうかを調べる
  1. スカラとはint、float、string、bool型のことを指します ↩︎

get_class関数

get_class()はオブジェクトのクラス名を調べます。
インスタンスなどのオブジェクトをgettype()で調べた場合、全てがobjectとなってしまうので、こちらを使います。

$obj = new DateTime();
get_class($obj); // 'DateTime'

型演算子instanceof

instanceofは変数が特定のクラスのオブジェクトかどうかを調べます。継承したものも判定できます。

class Animal {}
class Dog extends Animal {}

$d = new Dog();

$d instanceof Dog;    // true
$d instanceof Animal; // true

$dog = 'Dog';
$d instanceof $dog;   // true

特定の型のみ通過させたい場合や、型の種類によって分岐させる時に利用します。

class Animal {}
class Dog extends Animal {}
class Cat extends Animal {}

// 特定の型のみ通過
$d = new Dog();
if (! $d instanceof Dog) {
    throw new Exception();
}

// 型の種類によって分岐
switch (true) {
    case $d instanceof Dog:
        echo "This is Dog";
        break;
    case $d instanceof Cat:
        echo "This is Cat";
        break;
    default:
        throw new Exception();
}

コメント

タイトルとURLをコピーしました