PHP キャスト
時には変数のデータ型を別のデータ型に変換したり、特定のデータ型を持つようにしたりする必要があります。これはキャスト(Casting)を使用して行います。
データ型の変換
PHPでのキャストは以下の文法で行います:
(string)
– 文字列(String)に変換(int)
– 整数(Integer)に変換(float)
– 浮動小数点数(Float)に変換(bool)
– ブール値(Boolean)に変換(array)
– 配列(Array)に変換(object)
– オブジェクト(Object)に変換(unset)
– NULLに変換
文字列へのキャスト
文字列にキャストするには、(string)
を使用します:
例
$a = 5; // 整数
$b = 5.34; // 浮動小数点数
$c = "hello"; // 文字列
$d = true; // ブール値
$e = NULL; // NULL
$a = (string) $a;
$b = (string) $b;
$c = (string) $c;
$d = (string) $d;
$e = (string) $e;
// PHPでオブジェクトの型を確認するには、var_dump()関数を使用します:
var_dump($a);
var_dump($b);
var_dump($c);
var_dump($d);
var_dump($e);
整数へのキャスト
整数にキャストするには、(int)
を使用します:
例
$a = 5; // 整数
$b = 5.34; // 浮動小数点数
$c = "25 kilometers"; // 文字列
$d = "kilometers 25"; // 文字列
$e = "hello"; // 文字列
$f = true; // ブール値
$g = NULL; // NULL
$a = (int) $a;
$b = (int) $b;
$c = (int) $c;
$d = (int) $d;
$e = (int) $e;
$f = (int) $f;
$g = (int) $g;
浮動小数点数へのキャスト
浮動小数点数にキャストするには、(float)
を使用します:
例
$a = 5; // 整数
$b = 5.34; // 浮動小数点数
$c = "25 kilometers"; // 文字列
$d = "kilometers 25"; // 文字列
$e = "hello"; // 文字列
$f = true; // ブール値
$g = NULL; // NULL
$a = (float) $a;
$b = (float) $b;
$c = (float) $c;
$d = (float) $d;
$e = (float) $e;
$f = (float) $f;
$g = (float) $g;
ブール値へのキャスト
ブール値にキャストするには、(bool)
を使用します:
例
$a = 5; // 整数
$b = 5.34; // 浮動小数点数
$c = 0; // 整数
$d = -1; // 整数
$e = 0.1; // 浮動小数点数
$f = "hello"; // 文字列
$g = ""; // 文字列
$h = true; // ブール値
$i = NULL; // NULL
$a = (bool) $a;
$b = (bool) $b;
$c = (bool) $c;
$d = (bool) $d;
$e = (bool) $e;
$f = (bool) $f;
$g = (bool) $g;
$h = (bool) $h;
$i = (bool) $i;
値が0、NULL、false、または空の場合、(bool)
はそれをfalseに変換し、それ以外の場合はtrueに変換します。
-1もtrueに変換されます。
配列へのキャスト
配列にキャストするには、(array)
を使用します:
例
$a = 5; // 整数
$b = 5.34; // 浮動小数点数
$c = "hello"; // 文字列
$d = true; // ブール値
$e = NULL; // NULL
$a = (array) $a;
$b = (array) $b;
$c = (array) $c;
$d = (array) $d;
$e = (array) $e;
配列に変換する際、ほとんどのデータ型は1つの要素を持つインデックス付き配列に変換されます。
NULL値は空の配列オブジェクトに変換されます。
オブジェクトはプロパティ名がキー、プロパティ値が値となる連想配列に変換されます:
例
// オブジェクトを配列に変換する例
class Car {
public $color;
public $model;
public function __construct($color, $model) {
$this->color = $color;
$this->model = $model;
}
public function message() {
return "私の車は" . $this->color . "の" . $this->model . "です!";
}
}
$myCar = new Car("red", "Volvo");
$myCar = (array) $myCar;
var_dump($myCar);
オブジェクトへのキャスト
オブジェクトにキャストするには、(object)
を使用します:
例
$a = 5; // 整数
$b = 5.34; // 浮動小数点数
$c = "hello"; // 文字列
$d = true; // ブール値
$e = NULL; // NULL
$a = (object) $a;
$b = (object) $b;
$c = (object) $c;
$d = (object) $d;
$e = (object) $e;
オブジェクトに変換する際、ほとんどのデータ型は対応する値を持つ「scalar」という名前のプロパティを持つオブジェクトに変換されます。
NULL値は空のオブジェクトに変換されます。
インデックス配列はインデックス番号がプロパティ名、値がプロパティ値となるオブジェクトに変換されます。
NULLへのキャスト
NULLにキャストするには、(unset)
を使用します:
例
$a = 5; // 整数
$b = 5.34; // 浮動小数点数
$c = "hello"; // 文字列
$d = true; // ブール値
$e = NULL; // NULL
$a = (unset) $a;
$b = (unset) $b;
$c = (unset) $c;
$d = (unset) $d;
$e = (unset) $e;