PHPプログラミング

最終更新日:
公開日:

レシピ

変数

変数の値が特定の型であるかを確認する

変数に入っている値が想定している型になっているか確認する方法について解説します。

この記事のポイント

  • 変数に入っている値の型を確認する
  • 変数の値がnullかどうかを確認する
  • 配列や浮動小数点数の型を確認する

目次

様々な型に対応したチェック方法

プログラムの中で、変数の値が「整数」か否か、または「文字列」かどうかなどを確認したいことがあります。
今回はそんな時に便利な、変数の値が意図した型であるかを確認する方法を解説します。

型を確認するための関数

PHPでは型の種類ごとに引数で渡した値がその型であるかを確認する関数が用意されています。
主要な型に対応する関数は以下の8種類です。

関数関数の内容
is_bool()値の型が論理値(truefalse)であるかを確認する
is_float()値の型が浮動小数点数であるかを確認する
is_int()値の型が整数であるかを確認する
is_numeric()値が整数、または数字の文字列であるかを確認する
is_string()値の型が文字列であるかを確認する
is_null()型がnullであるかを確認する
is_array()値が配列形式であるかを確認する
is_object()値がオブジェクト形式であるかを確認する

整数や文字列の型だけでなく、nullや配列、オブジェクトについても確認する関数が用意されています。

型を確認してみる

実際に変数に様々な値を入れて、それぞれの関数の出力結果を確認してみましょう。
まずは整数の「1」を入れてみます。

PHP コード例

<?php
$a = 1;

var_dump( is_bool($a));		// false
var_dump( is_float($a));	// false
var_dump( is_int($a));		// true
var_dump( is_numeric($a));	// true
var_dump( is_string($a));	// false
var_dump( is_null($a));		// false
var_dump( is_array($a));	// false
var_dump( is_object($a));	// false

is_int関数is_numeric関数のみtrueとなり、それ以外はfalseとなりました。

続いて、変数の値を文字列の「100」に変えて実行してみます。

PHP コード例

<?php
$a = "100";

var_dump( is_bool($a));		// false
var_dump( is_float($a));	// false
var_dump( is_int($a));		// false
var_dump( is_numeric($a));	// true
var_dump( is_string($a));	// true
var_dump( is_null($a));		// false
var_dump( is_array($a));	// false
var_dump( is_object($a));	// false

is_numeric関数is_string関数trueとなりました。
整数ではないのでis_int関数falseです。

次に、「null」の状態で実行をしてみます。

PHP コード例

<?php
$a = null;

var_dump( is_bool($a));		// false
var_dump( is_float($a));	// false
var_dump( is_int($a));		// false
var_dump( is_numeric($a));	// false
var_dump( is_string($a));	// false
var_dump( is_null($a));		// true
var_dump( is_array($a));	// false
var_dump( is_object($a));	// false

is_null関数のみtrueとなりました。

次は値を配列形式にして実行してみます。

PHP コード例

<?php
$a = ["test","array"];

var_dump( is_bool($a));		// false
var_dump( is_float($a));	// false
var_dump( is_int($a));		// false
var_dump( is_numeric($a));	// false
var_dump( is_string($a));	// false
var_dump( is_null($a));		// false
var_dump( is_array($a));	// true
var_dump( is_object($a));	// false

is_array関数のみtrueとなります。
配列の値を空にしても同じ結果となりました。

続いて、値を「false」にして実行してみます。

PHP コード例

<?php
$a = false;

var_dump( is_bool($a));		// true
var_dump( is_float($a));	// false
var_dump( is_int($a));		// false
var_dump( is_numeric($a));	// false
var_dump( is_string($a));	// false
var_dump( is_null($a));		// false
var_dump( is_array($a));	// false
var_dump( is_object($a));	// false

値を「1.5125」に変更して実行してみます。

PHP コード例

<?php
$a = 1.5125;

var_dump( is_bool($a));		// false
var_dump( is_float($a));	// true
var_dump( is_int($a));		// false
var_dump( is_numeric($a));	// true
var_dump( is_string($a));	// false
var_dump( is_null($a));		// false
var_dump( is_array($a));	// false
var_dump( is_object($a));	// false

is_float関数is_numeric関数trueとなりました。
is_numeric関数は浮動小数点数であってもtrueとなるようです。

以上、様々な値を使って型の確認を行ってみました。
文字列であっても数値であればtrueと判断するis_numeric関数は少しゆるい判断基準ですが、文字列の「1」などに対しても使えるので便利かもしれません。

型の確認においてはgettype関数を使った方法もあります。
詳しくは「変数の値の型を取得する:gettype関数」をご覧ください。
また、型の強制変換を行いたい場合は「変数にセットされた値の型を強制変換する」をご覧ください。