トップ > php > 

PHPのデータ型と型変換(キャスト)完全ガイド|実戦コード解説

PHPのデータ型と型変換(キャスト)完全ガイド|実戦コード解説

PHPの全型を網羅。intやstringの基本から、ヒアドキュメント、NULL、NAN、callableまで解説。変数展開やキャストの挙動など、PHP: 型 - Manualの要点をサンプルコードで素早く引ける実践リファレンスです。

データ型 目次

整数(int, integer)

整数(integer)は、10 進数(基数 10)、16 進数(基数 16)、8 進数(基数 8)あるいは 2 進数(基数 2)表記で指定可能。

正の値(+)負の値(-)を数値の前に付与可能。

<?php
$num = 1234;		// 10進整数
$num = -1234;		// 負の値
$num = 01234;		// 8進整数 (0で始まる数値は8進数とみなされる)
$num = 0xffff;		// 16進整数 (0xで始まる数値は16進数とみなされる)
$num = 0b11000100;	// 2進整数 (0bで始まる数値は2進数とみなされる)(PHP 5.4.0以降)
?>

浮動小数点数(float, double, real)

<?php
$num = 1.234;		/* 浮動小数点数 */
$num = 1.2e3;		/* 浮動小数点数(指数表記) 1.2 × 103 */
$num = 7E-10;		/* 浮動小数点数(指数表記) 7 × 10 - 10 */
$num = 123_456_789;	/* 数値リテラルセパレータ(PHP 7.4.0 以降) */
?>

論理型(bool, boolean)

true、false を指定する。小文字、大文字の区別はない。

<?php
$bool = true;
$bool = false;
$bool = TRUE;
$bool = True;
?>

一般的に、true は整数の 1、false は 整数の 0 として扱わる。
※VBなどの一部言語では true は -1 なので注意が必要。

Javaは boolean型と数値の互換性はない。よって、true は整数の 1、false は 整数の 0 としての扱いはない(コンパイルエラー)

true、false を整数として扱い比較するのは、バグの温床になりやすい。
比較は if ($a === true)、if ($a === false) のような厳密な比較を行うことが、可読性が高く望ましい。

<?php
echo (int)true;		/* 1 表示 */
echo (int)false;	/* 0 表示 */
echo intval(true);	/* 1 表示 */
echo intval(false);	/* 0 表示 */

echo (bool)0;		/* 表示されない */
echo (bool)'0';		/* 表示されない */
echo (bool)"0";		/* 表示されない */
echo (bool)1;		/* 1 表示 */
echo (bool)-1;		/* 1 表示 */
echo (bool)123;		/* 1 表示 */
echo (bool)'1';		/* 1 表示 */
echo (bool)"1";		/* 1 表示 */
?>

文字列(string)

文字列はシングルクオーテーション(')、ダブルクォーテーション(")で囲む。ダブルクォーテーションで囲まれた文字列の中ではエスケープシーケンスを使用できる(※シングルクオーテーションでは使用できない)。

<?php
$str = 'Hello';	/* Hello 表示 */
$str = "Hello";	/* Hello 表示 */
?>

シングルクオーテーションで囲まれた文字列の中で、文字としてシングルクオーテーションを使いたい場合は \' を、ダブルクォーテーションで囲まれた文字列の中で、文字としてシングルクオーテーションを使いたい場合は \" を使用する。

<?php
$str = 'Hello \'World\' ';	/* Hello 'World' 表示 */
$str = "Hello \"World\" ";	/* Hello "World" 表示 */
?>

シングルクオーテーションで囲まれた文字列の中でダブルクォーテーションを使用できる。また、ダブルクォーテーションで囲まれた文字列の中でシングルクオーテーションを使用できる。

<?php
$str = 'Hello "World" ';	/* Hello "World" 表示 */
$str = "Hello 'World' ";	/* Hello 'World' 表示 */
?>
ダブルクォーテーション内で使用できるエスケープシーケンス 一覧表
エスケープシーケンス機能
\"二重引用符
\nラインフィード (LF またはアスキーの 0x0A (10))
\rキャリッジリターン (CR またはアスキーの 0x0D (13))
\\バックスラッシュ
\t水平タブ (HT またはアスキーの 0x09 (9))
\v垂直タブ (VT またはアスキーの 0x0B (11))
\eエスケープ (ESC あるいはアスキーの 0x1B (27))
\fフォームフィード (FF またはアスキーの 0x0C (12))
\[0-7]{1,3}8進数: 正規表現 [0-7]{1,3} にマッチする文字シーケンスは、8 進数表記の 1 文字 (例:. "\101" === "A") です。 正規表現にマッチする文字シーケンスは、8 進数表記の 1 文字です。 1 バイトに収まらない部分は、何もメッセージを出さずにオーバーフローします (例: "\400" === "\000") 。
\x[0-9A-Fa-f]{1,2}16進数: 正規表現 [0-9A-Fa-f]{1,2} にマッチする文字シーケンスは、16 進数表記の 1 文字(例: "\x41" === "A")です。
\u{[0-9A-Fa-f]+}Unicode: 正規表現 [0-9A-Fa-f]+ にマッチする文字シーケンスは、Unicode のコードポイントです。 そのコードポイントの UTF-8 表現を文字列として出力します。 シーケンスを波括弧で囲む必要があります。例 "\u{41}" === "A"

文字列(string)内の変数の置き換え

文字列がダブルクォーテーションで括られるかヒアドキュメントで指定された場合、 その中の変数は置き換えられる。
<?php
$name = 'hogehoge';
echo "私の名前は $name です。";	/* 私の名前は hogehoge です。を表示 */
?>

ヒアドキュメント(<<<)

NULL型(null)

null 型は、PHPの unit 型(意味のある情報を持たないことを示す型)であり、単一の値 null しか持たない。

※PHPでは null 型は unit 型としているが、多言語では異なる。Unit型は「何もしない」ことを表す型、nullは「値がない」ことを表す値(またはその状態)という違いがある。

nullは「値が存在しないこと」を示す特別な値である。大文字・小文字は区別されない。ただし、nullと、未定義値は、is_null() などで判断する際の動作が異なる。

<?php
$var = null;

/* is_null($var) === true であり NULL型 が表示される */
if (is_null($var) === true) {
	echo 'NULL型';
} else {
	echo 'NULL型ではない';
}
?>
unset() した変数の is_null()、isset()、empty() の評価
関数unset() した変数警告(Notice/Warning)
is_null()true発生する
empty()true 発生しない
isset()false発生しない
<?php
$var = 'hogehoge';
unset($var);

/* is_null($var) === true であり NULL型 が表示される */
if (is_null($var) === true) {
	echo 'NULL型' . '<br>';
} else {
	echo 'NULL型ではない' . '<br>';
}

if (is_null($var) === true) {
	echo 'is_null() は true' . '<br>';
} else {
	echo 'is_null() は false' . '<br>';
}

if (empty($var) === true) {
	echo 'empty() は true' . '<br>';
} else {
	echo 'empty() は false' . '<br>';
}

if (isset($var) === true) {
	echo 'isset() は true' . '<br>';
} else {
	echo 'isset() は false' . '<br>';
}
?>

未定義値

is_null()、isset()、empty() の null、''、0 などの評価
is_null()empty()isset()
未定義値true ※1truefalse
$var = nulltruetruefalse
$var = ''falsetruetrue
$var = ""falsetruetrue
$var = 0falsetruetrue
$var = 1falsefalsetrue
$var = '0'falsetruetrue
$var = "0"falsetruetrue
$var = truefalsefalsetrue
$var = falsefalsetruetrue
$var = "ABC"falsefalsetrue

※1 Warningが発生する(PHP Notice: Undefined variable)

<?php
$var = 'hogehoge';
unset($var);

/* is_null($var) === true であり NULL型 が表示される */
if (is_null($var) === true) {
	echo 'NULL型' . '<br>';
} else {
	echo 'NULL型ではない' . '<br>';
}

if (is_null($var) === true) {
	echo 'is_null() は true' . '<br>';
} else {
	echo 'is_null() は false' . '<br>';
}

if (empty($var) === true) {
	echo 'empty() は true' . '<br>';
} else {
	echo 'empty() は false' . '<br>';
}

if (isset($var) === true) {
	echo 'isset() は true' . '<br>';
} else {
	echo 'isset() は false' . '<br>';
}
?>

NAN(not a number)

コールバック(callable)

キャスト(型の相互変換)

PHPは変数宣言時に明示的な型定義を必要としない(動的型付け言語)である。変数の型は保存する値によって決まる。

$var に 文字列を代入すれば $var は String型になり、$var に 整数を代入すれば $var は int型になる。$var に 文字列を代入後、整数を代入すれば $var は int型になる。

変数を強制的に特定の型に変換したい場合は、キャストすることで特定の型に変換できる。

キャスト(型の相互変換) 一覧表
キャスト機能注意点
(int)整数へのキャスト
(integer)(int) のエイリアス(別名)非推奨
(bool)真偽値へのキャスト
(boolean)(bool)のエイリアス(別名)非推奨
(float)浮動小数点数へのキャストPHPはC言語で作られている。PHPでdoubleまたはfloatと定義すると内部のC言語ではdoubleとして扱われる。
(double)(float) のエイリアス(別名)非推奨
(real)(float) のエイリアス(別名)非推奨。PHP 8.0.0で削除
(string)文字列へのキャスト
(array)配列へのキャスト
(object)オブジェクトへのキャスト
(unset)NULL値へのキャスト
(binary)バイナリ文字列へのキャストバイナリ文字列への対応はPHP5.2.1以上
<?php
(int)			整数
(integer)		(int)と同義。非推奨
(bool)			真偽値
(boolean)		(bool)と同義。非推奨
(float)			浮動小数点数
(double)		(float)と同義。非推奨
(real)			(float)と同義。非推奨。PHP 8.0.0で削除
(string)		文字列
(array)			配列
(object)		オブジェクト
(unset)			NULL値
(binary)		バイナリ文字列(PHP5.2.1~)
?>

おすすめ記事

10日で使えるPHP | 未経験のサルでも分かるPHPの学習サイト 10日で使えるPHP | 未経験のサルでも分かるPHPの学習サイト

文系未経験、サルでも10日でPHPを使えるように内容を構成した独学向け学習サイト。不要な基礎はバッサリ切り捨て必要な基礎を十分に深堀した・・・  続きを見る 

Copyright (C) 2001~2026年 e-elder.jp All Rights Reserved. Update 2026年2月27日
運営者情報 ご質問はこちらへお願いします info@e-elder.jp