PHPで扱う主なデータ型
分類 | データ型 |
---|---|
スカラー型 | 論理値 (bool) |
整数 (int) | |
浮動小数点数 (float, double) | |
文字列 (string) | |
複合型 | 配列 (array) |
オブジェクト (object) | |
特殊型 | リソース (resource) |
ヌル (NULL) |
デバッグのために、単純に人間が読みやすい形で型を表示したい場合には gettype() を使用できるが、型をチェックする場合には gettype()を使用してはいけない。 is_type 関数(is_int や is_array など)を使用してください。
キャスト
厳密な比較や演算をしたい場合、明示的(強制的)に型を変換する。
データ型 | 概要 |
---|---|
(int)、(integer) | 整数型へのキャスト |
(bool)、(boolean) | 論理型へのキャスト |
(float)、(double) | 浮動小数点型へのキャスト |
(string) | 文字列型へのキャスト |
(binary) | バイナリ文字列へのキャスト |
(array) | 配列へのキャスト |
(object) | オブジェクトへのキャスト |
/*
連想配列をオブジェクトにキャストすると、
連想配列の各キーにはプロパティにアクセスする要領でアクセスできるようになる。
*/
$arr = ['a' => 1, 'b' => 2];
$obj = (object)$arr; //オブジェクトにキャスト
echo $obj->a; // 1
/*
識別子として無効なキー名は無効なプロパティ名に変換されるので、
オブジェクトにキャストするとアクセスできなくなる。
再び配列にキャストするとアクセスできるようになる。
*/
型宣言(タイプヒンティング)
関数のパラメータや戻り値、 クラスのプロパティ (PHP 7.4.0 以降) に対して型を宣言することができます。 これによって、その値が特定の型であることを保証できます。
タイプヒンティングで指定できる型はPHP5まではクラス名,self,array,callableだけだったが、PHP7からスカラ型とよばれる、bool,float,int,stringを型指定できるようになリました。
親クラスのメソッドをオーバーライドする場合、 子クラスのメソッドは、 親クラスで宣言された戻り値の型のいずれかに一致させなければなりません。 親クラスが戻り値の型を宣言していない場合、 子クラスのメソッドもそうしなければなりません。
//関数の引数と戻り値の型宣言
function getArea(float $base): float{ ... }
//クラスのプロパティ
class Person {
public string $firstname;
}