2019-07-05

型キャストで変数の型を変換する

PHPに関する記事

Javaなど他の言語と異なり、PHPは明示的な型定義を必要としません。変数の型は、その変数が使用される文により定義されます。例えば、ある文字列を変数$exampleに代入した場合には、$exampleの型は文字列になります。整数値を代入した場合には、その変数は整数型となる、といった具合です。

つまりPHPでプログラミングをするにあたっては、型の定義を意識する必要がない、といえます。しかし場面によっては型を明示する、変換する必要があります。どのようなシーンで変換を行うのか、型キャストの方法を考察してみましょう。

なぜ型キャストを行うのか

先ほど説明した通り、PHPにおいての型の考え方は曖昧ですが、すべての場面においてPHPの型の寛容さに頼っているわけにはいきません。

例えば、整数であるカウンタ変数$iを用いたループ内で、文字列$numとの一致を判別する場合はいかがでしょうか。比較演算子===は、値および同じ型である場合にTRUEを返します。型が一致しているのかも判定しますので、整数の100と文字列の”100″は異なる、という結果になります。このような場合は、型キャストを使ってデータ型を変換する必要があります。

構文

PHPの型キャストは、変換しようとする型を括弧で括り、キャストする変数の前に置きます。

$foo = 100; // 整数を代入
$bar = (string) $foo; // $barは文字列です

型キャスト一覧

  • (int), (integer) – 整数へのキャスト
  • (bool), (boolean) – 論理値へのキャスト
  • (float), (double), (real) – float へのキャスト
  • (string) – 文字列へのキャスト
  • (array) – 配列へのキャスト
  • (object) – オブジェクトへのキャスト
  • (unset) – NULL へのキャスト (PHP 5)

サンプルコード

<?php
$foo = 100; // 整数を代入
$bar = "100"; // 文字列を代入

echo '$fooの型:' . gettype($foo) . '<br>';
echo '$barの型:' . gettype($bar) . '<br>';

echo '--------------------'

$foo = (strint) $foo; // 整数を文字列に
$bar = (int) $bar; // 文字列を整数に

echo '$fooの型:' . gettype($foo) . '<br>';
echo '$barの型:' . gettype($bar) . '<br>';

以下のように出力されます。
整数が文字列へ、文字列が整数に変換されているのが確認できます。

$fooの型:integer
$barの型:string
--------------------
$fooの型:string
$barの型:integer

スポンサーリンク

参考リンク

型の相互変換 – PHPマニュアル