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

PHP

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

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

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

PR

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」になっていることが確認できました。

PR

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)

コメント

Ads Blocker Image Powered by Code Help Pro

広告ブロッカーが検出されました。

ブラウザの拡張機能を使用して広告ブロックをしていることが確認できました。 ブラウザの広告ブロッカー機能を無効にしていただくか、codelikes.comをホワイトリストに追加し、更新をクリックしてください。 お手数ですが、よろしくお願いします🙇‍♂️
タイトルとURLをコピーしました