2019-07-05
型キャストで変数の型を変換する
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マニュアル