【PHP】文字列を数値型(int)に変換する

【PHP】文字列を数値型(int)に変換する

PHPで文字列が入った変数を数値型に変換する方法です。

結論:intキャスト

$string = "123";
$number = (int)$string;
echo $number; // 123

(int) キャストは、PHPで変数を整数型に明示的に変換するための方法です。

この例では、文字列"123"を整数に変換しています。

ただし、文字列が"abc"のような非数値の場合は、整数0に変換されます。

その他の方法:intval()関数

intval()関数を使用することでも、文字列を数値型に変換できます。

$string = "123";
$number = intval($string);
echo $number; // 123

intval()関数とintキャストの違いは?

以下の例では、"abc"という非数値の文字列が与えられています。intval()関数も(int)キャストもどちらも0を返します。この点は同じです。

$string = "abc";

// intval() 関数の場合
$number = intval($string);
echo $number; // 0

// (int) キャストの場合
$number = (int)$string;
echo $number; // 0

違う点として、intval()関数はオプションを指定できます。

たとえば、intval()関数では、第二引数に基数を指定できますが、(int)キャストでは基数を指定する方法はありません。

$string = "10";

// intval() 関数の場合
$number = intval($string, 2); // 2進数として解釈
echo $number; // 2

// (int) キャストの場合
$number = (int)$string;
echo $number; // 10

これにより、intval()関数なら、16進数や8進数などの特定の基底で文字列を数値に変換することが可能です。

数値型になっていることをチェックする方法

is_int()関数を使用することで、変数が整数型かどうかを確認できます。

$string = "123";
$number = intval($string);

// 型チェック
if (is_int($number)) {
    echo "変数 \$number は整数型です。";
} else {
    echo "変数 \$number は整数型ではありません。";
}

浮動小数点数に変換する場合

浮動小数点数に変換する場合はfloatval()関数やキャスト(float)を使用します。

floatval()関数

// floatval() 関数を使用する場合
$string = "123.45";
$floatNumber = floatval($string);
echo $floatNumber; // 123.45

floatキャスト

// キャスト (float) を使用する場合
$string = "123.45";
$floatNumber = (float)$string;
echo $floatNumber; // 123.45

intval()関数やintキャストを使用すると小数点以下切り捨て

intval()関数や (int)キャストを使用して浮動小数点数を整数に変換すると、小数点以下が切り捨てられた整数が得られます。

// intval() 関数を使用する場合
$string = "123.45";
$integerNumber = intval($string);
echo $integerNumber; // 123

// (int) キャストを使用する場合
$string = "123.45";
$integerNumber = (int)$string;
echo $integerNumber; // 123