こんにちは、てっちーです。今回は、PHPで数値から文字列へと文字列から数値への変換方法について紹介します。PHPは型宣言がないのであいまいに書きがちですが、型が違うためにうまく動かなくなる場合もあります。そういった時にも参考にしてみてください。
数値から文字列へ変換する
strval関数でお手軽に文字列へ変換する
文字列から数値への変換は、strval関数をつかうと簡単です。引数に数値を指定すれば、文字列が返されます。
<? $num = 10; $str = strval($num); var_dump($str);
これを実行すると下記のように10の文字列が得られます。もし、空文字列(””)が返ってくる場合は正しく変換できていない可能性があります。スペルミスや数値が格納されているか確認してみましょう。“Array”が返ってきた場合は、配列を変換してしまっています。きちんと配列の要素を指定しましょう。
string(2) "10"
フォーマットを指定して数値から文字列へ変換する
ちょっとめんどくさいですが、sprintf関数でも文字列への変換ができます。sprintf関数は第1引数でFormatを指定し、第2引数以降はFormatで使用した変数になります。Formatについての詳細はこちらのPHPマニュアルをご参照ください。ざっくり説明すると、%dは変数を10進数で表示、%fは浮動小数(double)で表示を意味しています。また%fの間にある“.2″は少数点以下2桁まで表示することを意味しています。ちなみに%を使用しない部分は、そのまま文字が表示されます。C言語のフォーマットに似ている様なので、ご存知の方には簡単だと思います。
$str1 = sprintf("%d",$num); $str2 = sprintf("%.2f",$num); var_dump($str1); var_dump($str2);
これを実行すると下記のように表示されます。
string(2) "10" string(5) "10.00"
文字列から数値へ変換する
キャストを使って数値へ変換する
キャストを使うことで数値へ変換できます。キャストというのは変数の前に”(int)”や”(float)”を付けることで、それぞれ整数(int)と浮動小数点(float)へ変換できます。下記に使用例を記載するので参考にしてください。
<? $str="21"; $num = (int)$str; $fnm = (float)$str; var_dump($num); var_dump($fnm);
これを実行すると下記のように表示されます。それぞれintとfloatに変換されていることが分かります。
int(21) float(21)
関数を使用して整数へ、浮動小数点へ変換する
こちらは整数へはintval関数を、floatへはfloatval関数を使用することで、整数とfloatへ変換できます。intval関数では、引数に基数を指定することで16進数の文字列として数値へ変換します。下記の例でも16進数での変換例も示したので参考にしてください。なお、floatval関数は基数の指定はできません。
<? $str="13"; $num10=intval($str); $num16=intval($str,16); $float=floatval($str); var_dump($num10); var_dump($num16); var_dump($float);
これを実行すると下記のように表示されます。
int(13) int(19) float(13)
なんか変換結果がおかしいとき
変換結果がおかしい場合は、変換する前のものが正しくない場合が多いので、まずは変換前の変数が正しいかどうか確認してみてください。変換文と一緒にvar_dumpで中身を確認してみましょう!変数名のスペルミスの可能性もあるので、コピペで作るのがおすすめです。
まとめ
PHPは型の宣言が不要なので、ざっくりあいまいに書いてしまいますが、思わぬところで型が異なることでうまくいかない場合があります。そういう場合は今回の方法で明確に型変更を行って対策してください。いくつか変換方法もありますので、状況にあったものを使うのが良いと思います。ちなみに個人的には関数を使った変換を使う場合が多いです。
コメント
文字列から数値へ変換する→文字列化の説明
数値から文字列へ変換する→数値化の説明
段落タイトルが逆では。
その通りです。修正しました。ご指摘ありがとうございました!