Tips

2012.10.11

PHP integer型 【初級編 第11回】

integer型で扱える範囲

int型は32bitでは 最大で 2147483647 までの値しか扱えないので、それ以上増えた場合つまり 2147483648 になった場合は、自動的に float型に変換されます。
float型になりますが、型が内部的に変わっただけで、扱いかたが変わるわけではありません。
型が float型に変換されたかどうかを確認するには、var_dumpという変数の型を調べる機能を使用すれば表示してくれます。

<?php
 $num = 2147483647;
 var_dump($num);
 echo "<br>";
 $num = 2147483648;
 var_dump($num);
?>

ブラウザから確認すると、以下のように表示されます。

ブラウザ確認画像

int(2147483647) と表示されているのは integer型ということです。
またマイナスの値も同じく -2147483647 までは integer型として扱われ、-2147483648 からは float型として扱われます。

<?php
 $num = -2147483647;
 var_dump($num);
 echo "<br>";
 $num = -2147483648;
 var_dump($num);
?>

結果は以下のようになります。

ブラウザ確認画像

8進数、16進数の表記

8進数、16進数とは

また integer型ではソースコードで数値を扱う際に、10進数の表記以外にも 8進数表記、16進数表記にも対応しています。
8進数とは、1, 2, 3, 4 のように 1ずつ値を増やしていき、8まで到達したら次は 10になる。
それから 10, 11, 12, 13, 14 のように値を増やしていき、18まで到達したら次は 20 になるというものです。
つまり 1の位は 0~8の 8つの数字しか使用しないということです。

16進数とは、1, 2, 3, 4 のように 1ずつ値を増やしていき、9まで到達したら次は Aになる。
それから A, B, C, D, E, F のように値を増やしていき、Fまで到達したら次は 10 になるというものです。
それから 11, 12, 13, 14 のように増えていきます。
つまり 1の位は 0~9, A, B, C, D, E, F の16の英数字を使用するということです。

PHPではソースコードのほうに8進数表記や16進数表記で記述しても10進数の値で表示できます。
8進数や16進数を表示するには、決まりがあって、8進数の場合は、10進数で表した数値の前に 0を付けて、
16進数の場合には、10進数で表した数値の前に 0x を付けて表記します。

サンプルコードで確認

以下のサンプルでは、10進数の 16という値を8進数、16進数表記でコードに記述してブラウザで確認してみます。

<?php
$num10 = 16;   //10進数
$num8  = 020;  //8進数
$num16 = 0x10; //16進数
echo "1: ".$num10."<br>";
echo "2: ".$num8."<br>";
echo "3: ".$num16."<br>";
?>

ブラウザから確認してみると、みんな同じ値であることが分かります。
ブラウザ確認画像

ひとまず今回はここまでで、次回からは float型について記載していきたいと思います。

新連載はじまりました!新PHP基礎 連載リンク

PHP基礎 連載

Recent News

Recent Tips

Tag Search