データ型とリテラル


整数

プログラムで文字を表示したり、計算を行うにはその元となるデータが必要になります。スクリプト中に記述されるデータは、常に固定的なデータを表す定数と、値が変化する変数に分類されます。 変数は跡で解説するので、この場では定数について具体的に見てみましょう。

定数という表現は、変化しない変数という意味で使われることもあるので、特に直接記述されたデータのことをリテラルとも呼びます。 リテラルとは、スクリプト中に書かれる 10 や "Kitty on your lap" というような、数値や文字列データをそのまま書かれたものです。このデータは、プログラム実行中に変化することがないので、リテラルとなります。

リテラルにはすべて型が存在し、その型によってデータの種類が判断されます。基本となる整数型は小数点以下を含まない数値型の一種です。

PHP では、私たち人間が基本として利用している 10 進数の他に、情報技術の世界で頻繁に利用される 8 進数と 16 真数を使うことができます。10 進数の場合はそのまま、123456789 といった数字によって記述できます。8 進数を表す場合は数字の先頭を 0 に記述します。16 進数の場合は 0x 数字の前に記述します。

10進数 = 10, 100, 1234, 56789

8進数 = 012, 0144, 02322, 0156725

16進数 = 0xA, 0x64, 0x4D2, 0xDDD5

一般的に 8 進数が多用されることはほとんどありませんが、16 進数はバイト単位の処理などに頻繁に利用されます。

<?php
	echo "10進数=", 10, " ", 100, " ", 1234, " ", 56789, "\n";
	echo "8進数=", 012, " ", 0144, " ", 02322, " ", 0156725, "\n";
	echo "16進数=", 0xA, " ", 0x64, " ", 0x4D2, " ", 0xDDD5;
?>

このプログラムを実行すると、2つ目の echo と最後の echo の値が、10 進数で指定されている最初の echo と同じ値であることがわかります。このように、PHP では整数リテラルにおいて 8 進数と 16 進数を使うことができるのです。

因みに、echo の末尾に指定している文字列 "\n" は、改行を表すエスケープシーケンスと呼ばれる文字です。エスケープシーケンスは改行やタブ文字など、目に見える形で表記できない特殊な文字をあらわすために使われます。エスケープシーケンスについては、文字列を解説するときに詳しく説明します。

また、echo はこのように、文字列以外のデータ型を渡しても、自動的に文字列に変換して出力してくれます。データ型の変換についても、後ほど詳しく解説いたします。

符号を頭につけることで、整数が正、または負であるかを明記することができます。通常、整数はそのままの状態で正数となりますが、リテラルの先頭に - を記述すれば負数となります。大きな意味はありませんが、+ を符号にすれば正数であることを強調できます。

<?php
	echo -10 , "\n";
	echo -010 , "\n";
	echo -0x10;
?>

このプログラムの実行結果を見れば、記述通り負数が出力されるはずです。8 進数や 16 進数で負数を指定する場合は、先頭の 0 よりも前にマイナス記号を記述します。これは、- 記号がリテラルの一部ではなく、リテラルにかかる演算子であるためです。

PHP では、整数のビットサイズはシステムに依存するとされています。現在のシステムにおいて、多くの場合は 32 ビットが割り当てられています。


不動小数点数

小数点以下を表現し、より性格で誤差の無い計算を行うには浮動小数点数型を用います。浮動小数点数型はピリオド . を用いて小数点以下の数値を表すことができます。次の数値は、どれも浮動小数点数です。

1.234

.1234

1234.

1.234 は見たとおりの小数点数です。この他に、整数部を省略して小数点以下のみを記述する場合や、小数点以下を省略する記法があります。この場合、省略された部分は 0 と見なされます。ただし、この記法はあまり使われません。

<?php
	echo 1.41421356 , "\n";
	echo .34 , "\n";
	echo 1234.;
?>

この結果を見れば、小数点数が表現できることを確認できます。.34 という記述は 0.34 という結果になります。また 1234. は事実上 1234.0 なので、結果は 1234 と表示されます。

PHP では、分数表現もリテラルとして扱われます。例えば 1/2 は 0.5 と等しいと考えられます。実質的に / 演算子は除算演算子ですが、リテラルであれば分析時に計算できるためリテラルとして扱うことができるのです。演算については後記します。


論理型

論理型はプログラム実行中の検証、判断処理で利用する真偽のための専用の値です。実質的には整数型なのですが、判断基準が YES か NO かの 2 値で表現できる最も基本的で単純な型です。

論理型のリテラルは、真を表す TRUE と偽を表す FALSE の 2 値のみです。通常、真とは条件が整っている状態を表し、偽はそうではない状態を表します。これを、条件分岐や比較判断で利用することができます。

<?php
	echo "TRUE=" , TRUE , "\n";
	echo "FALSE=" , FALSE;
?>

TRUE と FALSE は実質的に数値で表現することができます。詳細は変換処理について解説するときに説明しますが、数値 0 の場合は FALSE と見なされ、それ以外の場合は TRUE と見なされます。

プログラムの実行結果を見れば TRUE は数値 1 と表示されます。これに対して FALSE の出力結果は表示されません。これは、FALSE は文字列のから文字 "" に等しいとされているため、FALSE を文字列として出力しようと echo が試みたため、から文字として出力されたのです。数値として変換すれば 0 になります。



前のページへ戻る次のページへ