ITHACK
~ みんなのIT部門 ~

【PHP】型 – 変数と値の種類(整数型/浮動小数点数型/文字列型/論理型)

変数や値(リテラル)には『型』と呼ばれる性質の定義があります。
型によってプログラムの動作が変わるので、処理をコントロールするためには必須の知識になります。

ここでは初心者向けに型について解説します。

  • 型について

  • 型の種類

  • 型の出力

  • 整数型

  • 浮動小数点型

  • 文字列型

  • 論理型

変数・値の型とは

型とは性質の定義です。
変数や値の『種類』とイメージしていただくと分かりやすく、例えば1234という値があるとき、この値が整数値なのか文字列値なのかを判別するための要素が型になります。

型の種類

型は様々な種類がありますが、代表的な型は次の7つになります。

種類 意味 PHPでの名称
整数型 小数点数以下がない数値 integer 1234
浮動小数点数型 小数点数以下がある数値 float / double 5.678
文字列型 文字を並べたもの string "Hello World"
論理型 真偽を表すもの boolean true / false
配列 複数のデータを順に並べたもの array [1,2,3,4]
オブジェクト型 クラスのオブジェクトなど object DateTime
NULL型 何もないことを表すもの NULL NULL

ここでは、初めに覚えておきたい整数型、浮動小数点数型、文字列型、論理型について解説していきます。

型の出力

型を学ぶにあたり、先に型の出力方法について説明します。

変数や値の型を出力するには、gettype()という記述を使います。
丸括弧()の中に変数または値を記述することで、型名を文字列で取得します。

サンプルコード

<?php

echo gettype(123);

?>
integer

なお、gettype()は関数と呼ばれる仕組みを使ったものです。関数については後ほど学ぶ項目なので割愛しますが、ここでは型名を取得するにはgettype(変数)またはgettype(値)を記述すると覚えましょう。

整数型

整数型は小数点数以下がない数値を表す型です。
PHPの名称はintegerとなっており、整数値を使うと自動でintegerとなります。

サンプルコード

<?php

// 変数に整数値を代入
$var = 1234;

// 整数値の型を出力
echo '1234 : '.gettype(1234)."\n";

// 整数値を記憶した変数の型を出力
echo '$var : '.gettype($var)."\n";

?>
1234 : integer
$var : integer

浮動小数点数型

浮動小数点数型は小数点数以下がある数値を表す型です。
PHPの名称はfloatまたはdoubleとなっており、浮動小数点数を使うと自動でfloatまたはdoubleとなります。

floatとdoubleの違いはdoubleの方が小数点数以下の桁数を多く扱えることですが、gettype()の仕様ではfloatの場合でもdoubleと取得されます。

サンプルコード

<?php

// 変数に浮動小数点数値を代入
$var = 123.567;

// 浮動小数点数値の型を出力
echo '1234.567 : '.gettype(123.567)."\n";

// 浮動小数点数値を記憶した変数の型を出力
echo '$var     : '.gettype($var)."\n";

?>
1234.567 : double
$var     : double

文字列型

文字列型は文字を並べたものを表す型です。
PHPの名称はstringとなっており、文字列を使うと自動でstringとなります。

サンプルコード

<?php

// 変数に文字列値を代入
$var = 'Hello World!';

// 文字列値の型を出力
echo "'Hello World!'  : ".gettype('Hello World!')."\n";

// 文字列値を記憶した変数の型を出力
echo '$var            : '.gettype($var)."\n";

?>
'Hello World!'  : string
$var            : string

論理型

論理型は真偽を表す型です。
PHPの名称はbooleanとなっており、論理値を使うと自動でbooleanになります。

サンプルコード

<?php

// 変数に論理値を代入
$var = true;

// 論理値の型を出力
echo 'true : '.gettype(true)."\n";

// 論理値を記憶した変数の型を出力
echo '$var : '.gettype($var)."\n";

?>
true : boolean
$var : boolean

変数と値の型の違い

『変数の型』と『値の型』は少し意味が異なります。
変数の型は変数に記憶できる値の型を表し、値の型は値そのものの型を表します。

そのため、基本的には変数は自身の型以外の値を記憶することはできないため、違う型を代入する場合は変数の型を変換する必要があります。

ただし、PHPでは代入した値に応じて変数の型が自動で変換されるので、その部分については意識せずプログラミングすることができます。

この辺りの特性は動的型付け/静的型付けと呼ばれるもので、興味がある方は調べてみてください。

演習問題

問題1

次の実行結果になるプログラムを作成してください。
なお、下記の条件を満たすものとします。

  • 実行結果の1行目のintegerは値(リテラル)の型で出力
  • 実行結果の2行目のintegerは変数の型で出力
value    : integer
variable : integer

問題2

次の実行結果になるプログラムを作成してください。
なお、下記の条件を満たすものとします。

  • 実行結果の1行目のdoubleは値(リテラル)の型で出力
  • 実行結果の2行目のdoubleは変数の型で出力
value    : double
variable : double

問題3

次の実行結果になるプログラムを作成してください。
なお、下記の条件を満たすものとします。

  • 実行結果の1行目のstringは値(リテラル)の型で出力
  • 実行結果の2行目のstringは変数の型で出力
value    : string
variable : string

問題4

次の実行結果になるプログラムを作成してください。
なお、下記の条件を満たすものとします。

  • 実行結果の1行目のbooleanは値(リテラル)の型で出力
  • 実行結果の2行目のbooleanは変数の型で出力
value    : boolean
variable : boolean

まとめ

型は変数・値の性質を表します。
PHPに限らずプログラミング言語では型の知識は必須となりますので、覚えていきましょう。