PHPの変数の型と型宣言についてまとめました

19/05/12 23:28:15     19/05/12 23:28:15

PHPだけではありませんが、プログラミング言語を学習するに当たって変数の型は初期の段階で押さえるべき必須項目です。

稀に変数に型が存在しないプログラミング言語も存在しますが、ほぼすべてのプログラミング言語には型が存在します。

そして変数を宣言する段階で型を宣言(PHPの場合は型宣言を省略することもできる)し、実際に使用するときもその変数の型を意識して使用します。型を無視して変数を扱うと、当然エラーの原因になります。

そこでこのページでは、PHPの変数の型と型宣言についてまとめていきます。ちなみに型の扱いは他の言語でも大部分が共通するので、PHPで押さえておけば他の言語を勉強するときにも確実に役立つでしょう。

PHPの変数の型

まずPHPの変数の基本となる型についてですが、以下のようになります。

・boolean
論理値(論理型)

・integer
整数(整数型)

・float(または、double)
浮動小数点数(浮動小数点型)

・string
文字列

・array
配列

・resource
リソース

・NULL
ヌル値

上記のいずれかの型を使用することになります。ただしPHPは変数を宣言する際に必ずしも型宣言を行う必要はなく、値を入れると自動的に型が決まります。一度型が決まるとそこからは自動的に型が切り替わるわけではなく、固定されます。

なので別の型の値を入れようとするとエラーになり、型を変えたい場合はキャストによって型を明示して変換する必要があります。

変数の宣言

それでは実際に上で紹介した型を意識して変数を宣言してみます。まずはboolean型です。booleanはtrueかfalseが入る型なので、それを入れて宣言すれば自動的にboolean型になります。具体的なコードは以下です。

// 真
$var = true;
// 偽
$var = false;

上記いずれかの形で変数を宣言すれば、boolean型になります。次にinteger型です。integerに自動でするためには、小数点を含まない整数を格納します。正の整数でも負の整数でも良くて、また10進数以外でも問題ありません。

具体的には以下のコードのようになります。

// 10進数
$var = 123;
// 8進数
$var = 0123;
// 16進数
$var = 0x123;

10進数、8進数、16進数でそれぞれ変数を用意しています。10進数のときはそのまま数値を格納し、8進数の場合数値の最初に0を付ける、16進数の場合は0xを付ける、といったルールになっています。

とはいえ10進数以外はそこまで使用頻度は高くないと思うので、10進数のみ把握しておけば問題ないかと思います。次にfloat型です。float型は小数点以下を含む数値を格納すればできます。

また小数を直接格納することもありますが、どちらかというと演算処理で使われることの多い型です。なので、シンプルにfloat型にする場合と演算処理を行う場合の両方を紹介しておきます。

$var = 3.14;

これはシンプルなパターンで、円周率を変数に入れて宣言するとfloat型になります。以下のように演算処理の結果に小数が含まれる場合もfloat型になります。

<?php
$var = (1.23 * 10 * 10) / 2 + 3;
var_dump( $var );
?>

この場合実行結果は「float(64.5)」となります。ちなみに変数の型と値を同時に出力していますが、これはvar_dump関数によるものです。var_dump関数を使用すれば変数の型と値を同時に出力できます。

次に文字列を含む変数の宣言です。文字列を含めて変数を宣言すると、自動的にstring型になります。

$var = 'これで';
$var = "string型になります";

PHPではシングルクォーテーションで囲ってもダブルクォーテーションで囲っても文字列として認識される仕様になっています。次に配列です。配列には数値を入れることも文字列を入れることも可能で、PHPの場合数値と文字列を混同して格納することも可能です。

$var =( "C言語", "MySQL", "PHP", "VPS" );

上記は文字列を格納したarray型として宣言されています。最後にNULLですが、NULLについてはそのままです。

$var = NULL;

このように宣言すれば型もNULLになります。

変数の型のキャスト

変数の型と宣言について一通り把握したら、次に勉強すべきはキャストです。キャストを把握すれば、一度宣言した変数の型を途中で変更することができます。

まずキャストの一覧ですが、以下のようになります。

・(bool), (boolean)
「論理値」へキャスト

・(int), (intval)
「整数」へキャスト

・(float), (double), (real)
「浮動小数点数」へキャスト

・(string)
「文字列」へキャスト

・(array)
「配列」へキャスト

・(object)
「オブジェクト」へキャスト

・(unset)
「ヌル値」へキャスト

使い方の例としては以下のようになります。

(int) $var;

変数の前にカッコ書きでキャストを指定すると、変数の型がキャストで指定した型に変換されます。それではより実践的なサンプルコードで紹介します。

<?php
$str = "100";
var_dump( $str );
var_dump( (int)$str );
?>

これを実行すると以下のようになります。

string(3) “100”
int(100)

もともとstring型で宣言していた変数を、キャストによってint型に変換しました。float型でも同じことができます。

$var = 3.141592;
var_dump( $var );
var_dump( (string)$var );
var_dump( (unset)$var );
?>

これを実行すると以下のようになります。

float(3.141592)
string(8) “3.141592”
NULL

float型からstring型に変換され、その後NULLになっていることがわかります。他のキャストでは中身の型が変わるだけでしたが、unsetにすると中身がNULLになるのでもともと何が入っていたのかは関係ありません。

変数の宣言において重要なこと

変数の基本的な型、宣言、キャストについて紹介してきました。基本を知ればそれほど難しくはないかと思いますが、変数に慣れてきたタイミングでもっとも頭を悩ませるものがあります。

それは、「変数名の付け方」です。変数名には関してはもちろんプログラミング規約に含まれているものではなく、自由度が高いです。自由度が高い故に、どのように名前を付けるか迷ってしまいます。

また自分だけがソースコードを見るならまだ良いのですが、他人が読むときの可読性に変数名は大きく影響します。パッと見の変数名だけで処理内容がわかると理想的です。

たとえば、実際のシステムで以下のような変数名を付けると処理内容がわかりません。

$a
$b
$var

これはあくまでもサンプルコードで付けるような変数名です。実際の処理では、中身がすぐにわかるように以下のように付けます。

$message
$UserID
$access_token

このように名付けておけば、その変数が何のために存在しているのか、処理の中でどのように使われているのか、といったことが理解しやすいです。

人気記事

編集部おすすめ記事

この記事を読んだ人はこんな記事を読んでいます

案件探しやフリーランスになるための相談する

最新お役立ちコンテンツ一覧