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;