PHPプログラミング

レシピ

変数

変数にセットされた値の型を強制変換する

変数にセットされた値に対し、強制的に特定の型へ変換する方法を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関数」を使ってください。

こちらの記事は役に立ちましたか?

ありがとうございます。
もしよろしければ、あわせてフィードバックや要望などをご入力ください。

ありがとうございます。
コメントを送信しました。