型について
そふぃのPHP入門 >> PHP言語リファレンス >> PHPの型 >> 型について

型について

型とは

型とは、扱う値の形式・・・・というか、なんというか・・・・。値の性質を表す概念です。データ型とも呼ばれます。

例えを出した方が分かりやすいと思いますが・・・・・・
「1」や「36」「528」などは整数型です。
これに小数点がついて、「1.24」とか「36.58」などになると浮動小数点型になります。
「あいうえお」や「abc」等は文字列型です。

PHPでは型の定義を勝手にしてくれます。つまり型の定義宣言は必要ありませんので、プログラムを組む時にはあまり意識する必要はないかもしれません。例えば、$a=123と定義すれば$aは自動的に整数型となり、状況に応じて型も自動解釈されていきます。極端にいうと、PHPでは型について知らなくてもプログラムは組めてしまいます。型についてはやっていくうちに徐々に理解していっても大丈夫だと思いますので、必要ない方は型の説明は読み飛ばしてもらって構いません。ただ、PHPの動作などは型の概念について知っていると大分楽に理解できますので、時間がある人はある程度理解してもらう事をお勧めします。

PHPの型

PHPでは8つの型をサポートしています。

スカラー型
 整数型(integer)
 浮動小数点型(float、double)
 文字列型(string)
 論理型(boolean)

複合型
 オブジェクト型(object)
 配列型(array)

特別型
 真偽型(null)
  リソース型(resourse)

各型の詳しい説明は次のページから始めます。PHPでの型一覧に一覧表を掲載しましたので参考にして下さい。さらに詳しい情報が知りたい方はPHPマニュアルをご覧下さい。

PHPマニュアル PHP:型

型の定義方法

PHPでは型を自動で定義しています。PHP内部では以下のように型の定義が行われています。

変数の型解説サンプル

  1. <?php
  2. $a = 8; //$aは整数型になる。
  3. $b = "50"; //$bに50という文字を代入。これは文字列型になる。
  4. $c = -5; //$cは整数型になる。
  5. $d = "あいう"; //$dは文字列型。
  6. $e = 0.24; //$eは浮動小数点型になる。
  7. $f = True; //$fは論理型になる。
  8. $g = Null; //$gは真偽型になる。
  9. ?>

 $aと$bの違いは数値を「"」で囲っているかどうかです。文字列を指定する時にはクォーテーションで囲む決まりがありますので、「"」で囲まれた「"50"」は整数型ではなく、文字列型になります。

型の自動変換

  1. <?php
  2. $x = 1234;
  3. $x = 528.23;
  4. $x = "文字列";
  5. $x = FALSE;
  6. ?>

この場合、$xは「整数型」→「浮動小数点型」→「文字列型」→「論理型」と自動で変化していきます。

型の自動解釈

PHPでは型を自動で定義しますが、PHPがどのように型の解釈をしているかを紹介します。

文字列と数値の結合

「.」(ピリオド)は文字列と文字列を結合する演算子ですが、整数型と文字列型の結合ができるでしょうか。

文字列型と整数型の結合

  1. <?php
  2. //整数型の$scoreと、文字列を「.」で文字列結合させてみる
  3.  
  4. $score = 80;
  5. echo "成績は".$score."点です";
  6. ?>

出力結果

成績は80点です

この場合、文字列結合が行われた時点で$scoreを文字列型と判断して文字列結合を受け入れています。

文字列と数値の計算

「$result」を計算して表示すると・・・・・。

  1. <?php
  2. //$resultに数値と文字列の計算結果を代入する
  3.  
  4. $result = 100 - "20点";
  5. echo $result;
  6. ?>

出力結果

80

計算はできたが、PHPが変数を整数型と解釈した為に文字列が消えた・・・。

これはどうしてかというと、計算式の「-」が入った為に、PHPが「$result」を整数型と解釈したためです。計算式を入れるなどして数値としての値を求めると、PHPは数値として解釈できる範囲までを自動的に解釈して計算しますので、文字列の部分は無視されることになるのです。

未定義の変数

  1. <?php
  2. //未定義の変数を出力します。
  3. echo $fruit."が好き<br />\n";
  4. echo $number + 30;
  5. ?>

出力結果

が好き
30

この結果は、変数が未定義の場合その変数を文字列として扱った時には「""」(空文字)が代入されたものとみなし、数値として扱った場合には「0」が代入されたとみなしているからです。

但し、このスクリプトは2文ともNoticeエラーを発生します。

Notice: Undefined variable: ○○(変数名) in (ファイルパスとエラー行数)

つまり「○○という変数はまだ定義してません」と怒ってるわけですがこのエラーはデフォルトでは出力されない為、実行結果は上記のようになります。

型の変換

型を強制的に変更したい場合は関数を使うか、キャスティングを行います。

settype関数による変換

関数による変換は第1引数に型を変更したい変数を、第2引数にデータ型を指定します。

参考関数

  • settype() ---- 変数の型をセットする

書式

  • bool settype( mixed var , string type )

成功するとTRUE、失敗するとFALSEを返します。第2引数のデータ型には以下のいずれかの文字列が使えます。

  • boolean
  • bool (PHP4.2.0以降利用可能)
  • integer
  • int (PHP4.2.0以降利用可能)
  • double
  • float (PHP4.2.0以降利用可能)
  • string
  • array
  • object
  • null (PHP4.1.0以降利用可能)

つまり上記のPHPの型で紹介したPHPがサポートする型のうち、リソース型を除いた英数字の方です。「bool」は「boolean」の省略形、「int」は「interger」の省略形です。

settype()による型変換

  1. <?php
  2. $var = 3.14; //$varの値は「3.14」。浮動小数点型
  3. settype($var, "integer"); //整数型に変換したので$varの値は「3」となる
  4. echo $var;
  5. ?>

出力結果

3

他のサンプルスクリプトなど、さらに詳しくは関数を参照して下さい。

キャスティングによる変換

括弧()内に変換しようとしている型を記述し、キャスティングしたい値の前に置く方法です。$varの部分は変数でなくても構いません。括弧()の中ではタブとスペースを用いる事ができます。

使い方:  ( type ) $var;

使用可能なデータ型(type)は以下の通りです。

  • (int)、(integer)―整数へのキャスト
  • (bool)、(boolean)―論理型へのキャスト
  • (float)、(double)、(real)―浮動小数点型へのキャスト
  • (string)―文字列型へのキャスト
  • (array)―配列型へのキャスト
  • (object)―オブジェクト型へのキャスト

キャスティングによる型変換

  1. <?php
  2. $foo = 3.14; //$fooの値は「3.14」。浮動小数点型
  3. $var = (integer) $foo; //$varの値は整数値の「3」となる
  4. echo $var;
  5. ?>

出力結果

3

これで$fooは浮動小数点型の「3.14」、$varは整数値の「3」となります。

ある変数を文字列にキャストする場合は「"」(ダブルクォーテーション)で囲む事で同じ動作となります。

クォーテーションによる型変換

  1. <?php
  2. $foo = 5; //$fooの値は「5」。整数型
  3. $str = "$foo"; //$strの値は「"5"」。文字列型
  4. echo gettype($str); //gettype()は型を取得する関数
  5. ?>

出力結果

string

参考関数

書式

  • string gettype( mixed var )