「PHP」の「データ型」について調べてみました
PHPの変数は「データ型」を指定しなくても作ることができますが、「データ型」という考え方は存在しているとのことで、今回は「データ型」等について学んでいきたいと思います。
「文字列」を「数値」に変換したりと、どのように「データ型」を変換できるのかも気になるので、調べていきたいと思います。
「C言語」よりは学びやすいと聞いていたのですが、言語仕様がいろいろと違っているので、少しずつ覚えてプログラムが書けるようになっていきたい・・・
「データ型」の種類
「整数」を表す「データ型」が「整数型」なのですが、扱える数値の範囲は「環境依存」みたいなのですが、自分の環境では、「2147483647」まで整数を扱うことができました。
どうやって調べたのかというと、「PHP_INT_MAX」という定数の中に「扱える値の最大値」が入っているので、その中身を調べてみました。
<?php print PHP_INT_MAX;
次に「小数」を表せるのが「浮動小数点型」です。
<?php print PHP_INT_MAX;
「var_dump」という関数があり、この関数を使うと「データ型」を確認できるとエンジニアさんに教えてもらったので、さっそく使ってみました。
<?php print PHP_INT_MAX;
ブラウザには、
float(1.23)
のように表示されて、変数の値が「float型」であることが確認できます。
「文字列」を表す場合は、「シングルクォート」で文字列を囲みます。
例えば、
<?php $i = '文字列です。';
のようになります。
「論理型(ブール型)」の値を変数に格納するには、
<?php $i = true;
のように書くと、「論理型」の値を変数に格納することができます。
「データ型」の変換
「文字列型」のデータを「整数型」に変換したりと、「データ型の変換」を行う方法について学んでいきたいと思います。
データ型の変換は「キャスト」という方法があるとのことで、
(変換するデータ型)変数名;
のように書くと変数のデータ型を変換することができるそうです。
プログラムを、
<php $i = '1'; var_dump($i); $i = (int)$i; var_dump($i);
のように書いて実行してみると、
string(1) "1" int(1)
のように表示され、データ型が変換できているのが確認できました。
でも、なぜこのような変換が必要なのかを考えてみると、「文字列」と「整数」があった場合に「文字列」の「数字」を「数値」に変換して計算したいというケースが考えられるかと思います。
例えば、
<?php $num1 = '1'; $num2 = 1; $goukei = $num1 + $num2; print $goukei;
と実行してみると、
2
と表示されました。・・・??なんで
「データ型」が違うのに足し算ができるのはさすがにちょっと違和感があります。
いろいろと調べていたら、「暗黙的」にデータ型を変換しているみたいですね。
こういうのはエラーを出してほしかったな~。
じゃあ「データ型変換」ってどこで使うのかな?
次は「NULL」と「数値」を足すとどうなるのか見てみたいと思います。
すると。・・・
1
と出ました。
「NULL」はどうやら数値の「0」扱いのようです。
今回もエラーは出なかったので、変数を利用するときは、「データ型」に注意して利用していかないといけませんね。