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

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

変数や値には『型』と呼ばれる性質があります。

型によってプログラムの動作が変わるため、処理をコントロールするために必要な知識です。

ここでは型について解説します。

検証環境

型は変数や値の性質の定義です。

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

種類

PHPの代表的な型は次の通りです。

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

型の確認

変数や値の型を確認するには、gettype関数を使います。

関数が未学習の方は、ここでは次の書き方のみ覚えておきましょう。

gettype(変数または値);

gettype関数は丸括弧(())内の変数または値の型を文字列で取得します。

例えば、整数値123の型の確認は次のようになります。

<?php

___ih_hl_start
echo gettype(123);
___ih_hl_end

?>
$ php sample.php
integer

gettype関数で取得した値をechoで出力しています。

実行するとintegerと出力しますが、integerは整数型を意味する表記です。

型は日本語ではないため、読み変えてください。

gettypeの表記
整数型 integer
浮動小数点数型 float / double
文字列型 string
論理型 boolean
配列型 array
オブジェクト型 object
NULL型 NULL

整数型、浮動小数点数型、文字列型、論理型の4つは単一の値を表すスカラー型と総称されます。

以降は基本的な型でスカラー型について解説します。

整数型

整数型は小数点数以下がない数値を表す型です。

『整数値』や『整数値を記憶する変数』は整数型になります。

<?php

$var = 1234;

// 整数値の型
___ih_hl_start
echo '[ 1234 ] : '.gettype(1234)."\n";
___ih_hl_end

// 整数値を記憶する変数の型
___ih_hl_start
echo '[ $var ] : '.gettype($var)."\n";
___ih_hl_end
 
?>
$ php sample.php
[ 1234 ] : integer
[ $var ] : integer

浮動小数点数型

浮動小数点数型は小数点数以下がある数値を表す型です。

『浮動小数点数値』や『浮動小数点数値を記憶する変数』は浮動小数点数型になります。

floatとdoubleの2種類の型があり、doubleの方が小数点数以下の桁数を多く扱え、gettype()の仕様ではfloatの場合でもdoubleを取得します。

<?php
 
$var = 1234.567;
 
// 浮動小数点数値の型
___ih_hl_start
echo '[ 1234.567 ] : '.gettype(1234.567)."\n";
___ih_hl_end

// 浮動小数点数値を記憶する変数の型
___ih_hl_start
echo '[ $var ]     : '.gettype($var)."\n";
___ih_hl_end
 
?>
$ php sample.php
[ 1234.567 ] : double
[ $var ]     : double

文字列型

文字列型は文字を羅列した値を表す型です。

『文字列値』や『文字列値を記憶する変数』は文字列型になります。

<?php
 
$var = 'Hello World!';
 
// 文字列値の型
___ih_hl_start
echo "[ 'Hello World!' ] : ".gettype('Hello World!')."\n";
___ih_hl_end
 
// 文字列値を記憶する変数の型
___ih_hl_start
echo '[ $var ]           : '.gettype($var)."\n";
___ih_hl_end
 
?>
$ php sample.php
[ 'Hello World!' ] : string
[ $var ]           : string

論理型

論理型は真偽を表す型です。

『真偽値』や『真偽値を記憶する変数』は文字列型になります。

<?php
 
$var = true;
 
// 真偽値の型
___ih_hl_start
echo '[ true ] : '.gettype(true)."\n";
___ih_hl_end
 
// 真偽値を記憶する変数の型
___ih_hl_start
echo '[ $var ] : '.gettype($var)."\n";
___ih_hl_end
 
?>
$ php sample.php
[ true ] : boolean
[ $var ] : boolean

変数と値の型の違い

『変数の型』と『値の型』は意味が異なります。

『変数の型』は変数が扱える型を意味し、『値の型』は値そのものの型を表ます。

プログラミングには『変数は自身と同じ型の値のみ記憶できる』という基本的な考え方があります。

そのため、変数に異なる型の値を代入する場合は値を変数と同じ型に変換する必要があります。

例えば、文字列型の変数に、整数型の123を代入する場合、123を文字列型に変換する必要があります。

ただし、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