DESIGNMAP

  1. TOP
  2. 公開講座
  3. ゼロから始めるPHP入門
  4. データ型 ー ゼロから始めるPHP入門(PHP7)【Vol.4】

データ型 ー ゼロから始めるPHP入門(PHP7)【Vol.4】

データ型とはテータの種類です。

データ型の分類

PHPでは以下の9種類のデータ型がサポートされています。

スカラー型

  • 論理型(boolean)
  • 整数型(integer)
  • 浮動小数点数型 (float, double)
  • 文字列型(string)

複合型

  • 配列型 (array)
  • オブジェクト型 (object)
  • コールバック型(callable

特殊型

  • リソース型(resource)
  • ヌル型 (NULL)

スカラー型とは一つの変数に一つの値だけを格納できるという意味です。複合型は一つの変数に複数の値を格納することができます。特殊型はそれ以外の特殊なデータです。

論理型 (boolean)

論理型は最もシンプルなデータ型です。真偽値とも言われます。TRUE/FALSEという二つの値しかありません。大文字小文字を区別しないため、True/False、true/falseと書かれる場合があります。本講座ではtrue/falseと記述します。

実際のプログラムではtrue/falseを直接コードに書くことはあまりありません。

別なデータ型を論理型に型変換(型キャスト)して使うケースが圧倒的に多いです。明示的にデータ型を論理型に変換する場合は(bool)を使います。

実際にコードを書いてみましょう。
Atomを起動して、新規ファイルを作ります。「PHPの実行」で作った[php-study]フォルダ内に「sample4-1.php」として保存します。「PHPの実行」と同じようにHTMLのコードをAtomで生成させて、body要素内に以下のコードを書きます。Apacheを起動して、ChromeからPHPを実行してください。

※PHPの実行方法の詳しい手順は「PHPの実行」をご覧ください。またこれ以降のコードに関しても任意のファイル名「sample4-2.php」などを作成して、実際に実行しながら読む進めていってください。

<?php
echo "<pre>";
var_dump((bool) 1);
var_dump((bool) 0);
var_dump((bool) -1);
var_dump((bool) 1.1);
echo "<br>";
var_dump((bool) "太郎");
var_dump((bool) "");
var_dump((bool) "false");
echo "<br>";
var_dump((bool) array());
var_dump((bool) array(1));
echo "</pre>";
?>

実行結果:

bool(true)
bool(false)
bool(true)
bool(true)

bool(true)
bool(false)
bool(true)

bool(false)
bool(true)

実行結果を見ると頭にboolが表示されます。これはデータ型の種類が「論理型」であることを示しています。データ型を調べるときはvar_dump()関数を使います。

falseに変換されるパターンをまとめておきます。

  • boolean型のFALSE
  • 整数 の0(ゼロ)
  • 浮動小数点数の0.0(ゼロ)
  • 空の文字列、 および文字列の “0”
  • 要素の数がゼロである配列
  • NULL(値がセットされていない変数を含む)
  • 空のタグから作成されたSimpleXMLオブジェクト

注意したいのは"false"-1trueに変換されてしまう点です。これは直感の予想と反します。

今回は(bool)を使い明示的に論理型に変換しましたが、実際のコーディングでは暗黙に論理型に変換され、true/falseになryパターンがほとんどです。例えば、条件式にデータを入れると、暗黙に論理型に変換されます。

ところで

echo "<pre>";

はvar_dumpの実行結果に見やすく改行が入るように使っています。文法的な意味はありません。var_dumpの出力を見やすくするためにpreタグで挟んで出力しています。

ざっくりと論理型以外のデータ型が論理型に変換されることがあると押さえておいてください。

リテラルとは

先ほど書いたコードで

var_dump((bool) 1);

1の部分をリテラル、もしくは整数リテラルと呼びます。

var_dump((bool) "太郎");

"太郎"部分を文字リテラルと呼びます。

リテラルとは、プログラムに直接記述するデータ値のことです。コードに書いた値が、そのまま実行時にもその値のまま意味をもちます。

例えば以下のコードの場合、

$name = "こんにちは";

リテラルは"こんにちは"です。$nameは変数で名前自体に意味はありません。別な名前でも動作は変わりませんで、リテラルではありません。

リテラルはPHPに限らずプログラミングでよく使う用語なので意味を理解しておきましょう。

整数型

整数型は10進数、16進数、8進数、2進数表記が可能です。符号(-または+)を前に付けることが可能です。2 進数表記は、PHP 5.4.0からサポートされました。

16進数は数字の頭に0x、8進数は0、2進数は0bをつけます。

以下のコードを書いて実行して見ましょう。

<?php
echo "<pre>";
var_dump(124);
var_dump(-124);
var_dump(0xFFFFFF);
var_dump(077);
var_dump(0b1010);
echo "</pre>"
?>

実行結果:

int(124)
int(-124)
int(16777215)
int(63)
int(10)

var_dumpで出力すると整数型は全て10進数表記で出力されます。

浮動小数点数

小数点付きの数字です。「3.14159e2」「3.14159e-2」のような指数表現も使えます。

<?php
echo "<pre>";
var_dump(3.14159);
var_dump(3.14159e2);
var_dump(3.14159e-2);
echo "</pre>";
?>

実行結果:

float(3.14159)
float(314.159)
float(0.0314159)

3.14159e2は、3.14159×102、3.14159e-2は、3.14159×10-2の意味です。

文字列型

文字列全体をシングルクォートかダブルクォートで囲んだものです。

<?php
echo "<pre>";
var_dump("こんにちは");
var_dump('こんにちは');
echo "</pre>";
?>

実行結果:

string(15) "こんにちは"
string(15) "こんにちは"

ちなみに15というのは文字のバイト数を示しています。日本語の場合、一文字3バイトを消費しています。

文字列はポイントが多いので、後に専用の回を設けて学習します。

配列型

配列型は一つの変数に複数の値を格納できるデータ型です。

<?php
$names = ["田中", "鈴木", "加藤"];
var_dump($names);
?>

実行結果:

array(3) { [0]=> string(6) "田中" [1]=> string(6) "鈴木" [2]=> string(6) "加藤" }

配列型はポイントが多いので、後に専用の回を設けて学習します。

ヌル型

ある変数が値を持たないことを表します。値はnullのみです。

変数は、以下の場合にnullとみなされます。

  • 変数にnullが代入された場合
  • 変数にまだ値が何も代入されていない場合
  • 変数にunset()されている場合
<?php
$name = null;
var_dump($name);
?>

実行結果:

NULL

オブジェクト型、コールバック型、リソース型は応用論点なので後半の回で学習します。

スポンサーリンク

プロフィール

DESIGNMAP
ディレクター
ON VISITINGを制作・運営。
お問い合わせ