この内容は古いバージョンです。最新バージョンを表示するには、戻るボタンを押してください。
バージョン:2
ページ更新者:atom
更新日時:2026-06-10 13:53:26

タイトル: キャスト

型を明示的に変換させることをキャストという。PHPは動的型付け言語で型変換が自動で行われる場面が多いものの、意図を明確にするためや厳密モード下では明示キャストが有効です。

以下、キャストの構文。

(変換後のデータ型)変換対象の変数;

例:int(100.10)

nullへ変換する場合は、unset(変換対象の変数); となる。

主要なキャスト記法

記法意味
(int) / (integer)整数へ変換
(float) / (double) / (real)浮動小数点へ変換
(string)文字列へ変換
(bool) / (boolean)真偽値へ変換
(array)配列へ変換
(object)オブジェクトへ変換
(unset)NULLへ変換(PHP 7.2以降は非推奨、PHP 8で削除)

使用例

$x = (int) 100.10;      // 100
$y = (int) "42abc";     // 42(先頭の数値部分)
$z = (float) "1.5";     // 1.5
$s = (string) 100;       // "100"
$b = (bool) 0;           // false
$b = (bool) "";          // false
$b = (bool) "0";         // false(要注意!)
$b = (bool) "false";      // true("false"という文字列はtrue)
$arr = (array) $obj;      // オブジェクト→連想配列

関数によるキャスト

キャスト記法以外にも、組み込み関数で型変換できます。

関数用途
intval($v)整数化(2進・8進・16進指定も可)
floatval($v)浮動小数点化
strval($v)文字列化
boolval($v)真偽値化(PHP 5.5+)
settype($v, "int")変数自体の型を変更
(int)$vキャスト記法(同等)

真偽値変換のルール(falsy値)

(bool)変換
falsefalse
0 / 0.0false
"" / "0"false
nullfalse
[](空配列)false
上記以外true

注意: "0" はfalseだが "0.0""false"" "(空白)はtrue。

暗黙の型変換

PHPは演算時に自動で型変換する。明示キャストの方が読みやすい。

echo "5" + 3;   // 8(文字列 + 数値 = 数値)
echo "5" . 3;   // "53"(文字列連結)
echo 0 == "abc"; // PHP 8 では false(7では true で罠だった)

注意点

  • 非数値文字列のint変換: PHP 8で動作が厳しくなった((int) "abc" は0、Warning出る場合あり)
  • 浮動小数点→整数: 切り捨て((int) 1.9 == 1)。四捨五入は round()
  • 配列→オブジェクト: 配列の各キーがプロパティになる(stdClass
  • 大きな数値: PHP_INT_MAXを超えると float になる

関連