PHPプログラミング

ベストプラクティス

変数の扱い

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

  • このエントリーをはてなブックマークに追加

変数に入っている値が意図した「型」かどうかを確認する方法について解説します。

目次

  1. #  様々な型に対応したチェック方法
  2. #  型を確認してみる

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

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

型を確認するための関数

型の種類ごとに、その型であるかを確認するための関数が用意されています。
次に、主要な確認用の関数を挙げてみました。

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

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

型を確認してみる

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

<?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
$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
$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
$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
$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
$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関数」をご覧ください。
また、型の強制変換を行いたい場合は「変数にセットされた値の型を強制変換する」をご覧ください。

  • このエントリーをはてなブックマークに追加