最終更新日:
公開日:
レシピ
変数
変数にセットされた値の型を強制変換する
変数にセットされた値に対し、強制的に特定の型へ変換する方法を2通り解説します。
この記事のポイント
- 変数に入っている値の型を変換する
- 値の型をコントロールすることでエラーを防ぐ
目次
値の型を特定の型に強制変換する
変数にセットされた値の型が決まっていると、エラーを未然に防いだり、処理の分岐を正確に行うことができるようになります。
今回はそんな時に活用できる方法を2つ紹介します。
- 型キャストを使う方法
- settype関数を使う方法
それぞれの型変換する例をコードを交えながら解説していきます。
型キャストを使う方法
変数の値の型を変換する1つ目の方法は「型キャスト」です。
関数を使うよりも手軽なため、多くの場合はこちらがオススメ。
例えば「整数」へ変換して処理したい場合は次のように、変数の前にキャストしたい型を指定します。
変数の値を「整数」へ型キャストする例
(int)$a
同じように、次のような型キャストを使うことができます。
- (int),(integer) – 整数型へキャスト
- (bool),(boolean) – 論理値へキャスト
- (float),(double),(real) – 浮動小数点数(float)へキャスト
- (string) – 文字列へキャスト
- (array) – 配列へキャスト
- (object) – オブジェクトへキャスト
型キャストを活用する例を、「キャストしない場合」と「キャストした場合」に分けて紹介します。
型キャストしない場合
<?php
$a = "1";
if( $a === 1 ) {
echo "OK"; // 出力されない
}
上記のコードは変数の値が「文字列」のため、比較演算子「===」を使った場合は型が異ります。
その結果、条件式はfalseになり何も出力されません。
型キャストした場合
<?php
$a = "1";
if( (int)$a === 1 ) {
echo "OK"; // 「OK」と出力される
}
上記のコードは「(int)」とキャストをつけているため、変数の値が「整数」として比較を行うのでtrueとなりメッセージが出力されます。
なお、型キャストによる型変換は一時的なものです。
もし変換した後の型を保持したい場合は、変数にセットし直す必要があります。
コード例
$a = (int)$a;
settype関数を使う方法
続いて、settype関数を使った型変換の方法を解説します。
settype関数の基本的な使い方
settype( $a, $type);
$aには型変換したい値のセットされた変数を指定し、$typeには変換後の「型」を指定します。
指定できる型は次のいずれかになります。
返り値は変換に成功するとtrue、失敗したらfalseが返されます。
- bool – 論理値へキャスト
- boolean – 論理値へキャスト
- int – 整数型へキャスト
- integer – 整数型へキャスト
- float – 浮動小数点数(float)へキャスト
- double – 浮動小数点数(float)へキャスト
- string – 文字列へキャスト
- array – 配列へキャスト
- object – オブジェクトへキャスト
- null – nullへキャスト
コード例
<?php
$a = "1";
var_dump($a); // string '1'
// 型を変換
settype($a, 'int');
var_dump($a); // int 1
関数が実行された時点で、変数には自動的に変換後の値がセットされます。
型キャストとは違い、一時的な変換ではないことに注意してください。
例えば、次の2つのコードは同じことをしています。
コード例
$a = (int)$a;
// 上記と同じことをしている
settype( $a, 'int');
条件式などで一時的に型変換したい場合は「型キャスト」を、ずっと変換後の型を保持したい場合は「settype関数」を使ってください。
こちらの記事は役に立ちましたか?
コメントありがとうございます!
運営の参考にさせていただきます。
ありがとうございます。
もしよろしければ、あわせてフィードバックや要望などをご入力ください。