【PHP】キャスト – 文字列型を数値型に変換する

プログラミングで文字列を数値型に変換したいケースがあります。

プログラミングではキャストと呼ばれる方法を使用することで型の変換を行うことができます。

★ 目的

  • キャスト(型の変換)を使えるようになる。

キャストとは

キャストとは『型を変換する』ことです。

キャストが使用される場面は多々あり、例えば、文字列型の数字を数値演算に使用したいとき、文字列型(string)を整数型(integer)に変換します。

キャストの構文

キャストの構文は次のようになります。

(型) 変数またはデータ

文字列型を数値型に変換する

文字列型を数値の整数型に変換する場合、次のように記述します。

ソースコード

<?php

// $mojiに文字列型の1234を代入
$moji = '1234';
// $numに$mojiを整数型(integer)に変換して代入
$num = (int) $moji;

// $mojiのデータ型を出力
echo '$moji -> '.gettype($moji)."\n";
// $numのデータ型を出力
echo '$num  -> '.gettype($num)."\n";

?>

実行結果

$moji -> string
$num  -> integer

出力から$mojiは文字列型(string)であり、それを整数型(integer)に変換できていることが分かります。

※ 整数型の正式な表記はintegerですが、intと省略して記述することができます。

また、文字列に小数点数以下が含まれる場合、整数型への変換では小数点以下が切り捨てられてしまいます。小数点以下も数値として変換したい場合は浮動小数点数型(double)に変換しましょう。

ソースコード

<?php

// $mojiに文字列型の123.987を代入
$moji = '123.987';
// $mojiを整数型に変換して、$num1に代入
$num1 = (int) $moji;
// $mojiを浮動小数点数型に変換して、$num1に代入
$num2 = (double) $moji;

// $num1の型と値を出力
echo '$num1(type)  -> '.gettype($num1)."\n";
echo '$num1(data)  -> '.$num1."\n";
// $num2の型と値を出力
echo '$num2(type)  -> '.gettype($num2)."\n";
echo '$num2(data)  -> '.$num2."\n";

?>

実行結果

$num1(type)  -> integer
$num1(data)  -> 123
$num2(type)  -> double
$num2(data)  -> 123.987

このように整数型で変換すると小数点数以下が切り捨てられ、対して、浮動小数点数型の変換では小数点数以下も数値として変換されることが分かります。

なお、文字列が数字以外の文字を含む場合は、先頭の文字から1文字ずつ変換し、数字以外の文字以降は変換されなくなります。

具体例を見てみましょう。

ソースコード

<?php

// パターン1(最後に文字がある)
$moji1 = '123A';
// パターン2(最初に文字がある)
$moji2 = 'A123';
// パターン3(途中に文字がある)
$moji3 = '12A3';

// $moji1を整数型に変換して値を出力
$num = (int) $moji1;
echo '$num(data)  -> '.$num."\n";

// $moji2を整数型に変換して値を出力
$num = (int) $moji2;
echo '$num(data)  -> '.$num."\n";

// $moji3を整数型に変換して値を出力
$num = (int) $moji3;
echo '$num(data)  -> '.$num."\n";

?>

実行結果

$num(data)  -> 123
$num(data)  -> 0
$num(data)  -> 12

いずれのパターンでもAという文字までが数値に変換されていることが分かります。(浮動小数点数型の変換も同じです。)

なお、先頭が数字以外の場合は自動で0として変換されます。

数値型を文字列型に変換する

数値型を文字列型に変換する場合、次のように記述します。

ソースコード

<?php

// $numに整数型の1234を代入
$num = 1234;
// $numを文字列型(string)に変換して代入
$moji = (string) $num;

// $numのデータ型を出力
echo '$num  -> '.gettype($num)."\n";
// $mojiのデータ型を出力
echo '$moji -> '.gettype($moji)."\n";

?>

実行結果

$num  -> integer
$moji -> string

文字列型を整数型に変換する方法と逆の書き方になります。

浮動小数点数型の場合も同様に記述することが可能です。

まとめ

様々なデータ型の変換がありますが、キャストの基本構文を覚えておけば良いでしょう。

なお、本記事で紹介したキャストは明示的なキャストとも呼ばれ、それと対になる暗黙のキャストもあります。

また、別の記事でご紹介しますので、是非他の記事もご覧ください。