PHPで文字列を数値に変換する4つの方法!

PHP

PHPで文字列を数値に変換する方法について書いています。
下記の方法で、文字列から数値に変換することが可能です。

・intキャストを使う
・floatキャストを使う
・doubleキャストを使う
・intval関数を使う

数値の型として、整数型(int)と浮動小数点型(float)があります。
サンプルコードは、PHPバージョン8.1.8で検証しています。

intキャストで変換する

intキャストを使うことで、文字列から数値に変換できます。
整数のキャストは文字列の先頭に「(int)」をつけます。

<?php
$numberText = "100";
var_dump($numberText); // string(3) "100"

$number = (int) $numberText;
var_dump($number); // int(100)

$numberText変数に文字列の「100」を代入しています。
var_dump関数で確認すると、文字列(string)になっています。

次に$numberText変数の先頭に「(int)」を書いて、数値に変換しています。
変換後の値を$number変数に代入しています。

$number変数をvar_dump関数で出力すると、整数型(int)の「100」になっていることが確認できました。

floatキャストで変換する

floatキャストを使うことで、文字列から数値(浮動小数点数)に変換できます。
floatキャストは文字列の先頭に「(float)」をつけます。

<?php
$numberText = "110.111";
var_dump($numberText); // string(7) "110.111"

$number = (float) $numberText;
var_dump($number); // float(110.111)

$numberText変数に文字列の「110.111」を代入しています。
var_dump関数で確認すると、文字列(string)になっています。

次に$numberText変数の先頭に「(float)」を書いて、数値(浮動小数点数)に変換しています。
floatキャストでは整数ではなく、小数点が扱える浮動小数点数型になります。

変換後の値を$number変数に代入しています。
$number変数をvar_dump関数で出力すると、浮動小数点数型(float)の「110.111」になっていることが確認できました。

doubleキャストで変換する

doubleキャストを使うことでも、文字列から数値(浮動小数点数)に変換できます。
doubleキャストは文字列の先頭に「(double)」をつけます。

型キャストについては公式のこちらに書いていますが、doubleキャストはfloatキャストの別名になります。

<?php
$numberText = "120.111"; // string(7) "120.111"
var_dump($numberText);

$number = (double) $numberText;
var_dump($number); // float(120.111)

$numberText変数に文字列の「120.111」を代入しています。
var_dump関数で確認すると、文字列(string)になっています。

次に$numberText変数の先頭に「(double)」を書いて、数値(浮動小数点数)に変換しています。
doubleキャストはfloatキャストの別名なので、動作は同じで、浮動小数点数型になります。

変換後の値を$number変数に代入しています。
$number変数をvar_dump関数で出力すると、浮動小数点数型(float)の「120.111」になっていることが確認できました。

intval関数で変換する

intval関数を使うことで、文字列から数値に変換できます。
intval関数に変換したい文字列を入れると、整数型に変換できます。

<?php
$numberText = "120";
var_dump($numberText); // string(3) "120"

$number = intval($numberText);
var_dump($number); // int(120)

$numberText変数に文字列の「120」を代入しています。
var_dump関数で確認すると、文字列(string)になっています。

次に$numberText変数をintval関数に渡すことで、整数型に変換されます。
変換後の値を$number変数に代入しています。

$number変数をvar_dump関数で出力すると、整数型(int)の「120」になっていることが確認できました。

切り捨てに注意する

浮動小数点型の値を整数型になおそうとすると、小数点が表現できないので、小数点以下は切り捨てられます。
例えば、下記のような場合です。

<?php
$numberText = "130.111";
var_dump($numberText); // string(7) "130.111"

$number = intval($numberText);
var_dump($number); // int(130)

$numberText変数に文字列の「130.111」を代入しています。
intval関数に渡すことで、整数型に変換しますが、文字列には小数点以下をを含んでいます。

変換した値をvar_dump関数で確認すると、小数点いかが切り捨てられた「130」になりました。

文字列でも計算可能

数値の変換を色々と行いましたが、PHPでは文字列同士でも計算することは可能です。
例えば、下記のような場合です。

<?php
$total = "100" + "220";
var_dump($total); // int(320)


$total = "10.15" + "11.22";
var_dump($total); // float(21.37)

$total変数に文字列「100」と文字列「220」を足して、代入しています。
var_dump関数で出力すると、整数型(int)の「320」になっていることが確認できました。

次に、$total変数に文字列「10.15」と文字列「11.22」を足して、代入しています。
var_dump関数で出力すると、浮動小数点数型(float)の「21.37」になっていることが確認できました。

このように、PHPで数値と判断できる場合は、文字列になっていても計算できます。
空白が入っている場合でも、数値のみだと計算可能です。

<?php
$total = "  10  " + "  89 ";
var_dump($total); // int(99)

コメント

タイトルとURLをコピーしました