PHPではあまり型のことを考えなくてもプログラミングができるが、自動的に型変換がなされるため時に思わぬ動作をすることがある。
PHPにはどんな型があるのか?
公式サイト http://php.net/manual/ja/language.types.intro.php
- 基本の型
- 擬似的な型
というものがある。
「擬似的な型」はドキュメント上でのみ出てくる「可読性をあげるための型」である。
「基本の型」 は更に 「4種類のスカラー型」「4種類の複合型」「2つの特別な型」 の3つに分類される。
4種類のスカラー型
- 論理値 boolean
- 整数 integer
- 浮動小数点数 float(double)
- 文字列 string
論理型 boolean
真偽の値を true
false
で表し、大文字・小文字は区別しない。
◉ true/falseを数値で表すと...(論理型=>整数への変換)
true
が1、 false
が0。
◉ boolean
に変換すると false
になるもの
- integer の 0 (ゼロ)
- float の 0.0 (ゼロ)
- 空の文字列、 および文字列の "0"
- 要素の数がゼロである 配列
- 特別な値 NULL (値がセットされていない変数を含む)
ゼロでない数字は全て true
になる。(-1 とか)
整数型 integer
{..., -2, -1, 0, 1, 2, ...} というような整数のこと。
普通に書けば10進数、「8進数・16進数・2進数」として認識して欲しい時はそれぞれ「0
・0x
・0b
」をつける。
$a = 1234; // 10進整数
$a = 0123; // 8進数 (10進数の83と等価)
$a = 0x1A; // 16進数 (10進数の26と等価)
$a = 0b11111111; // 2進数 (10進数の255と等価)
◉ 整数のオーバーフロー
大きすぎると、floatとして認識されるようになる。
その境目はPCのビット数に依存する。
◉ 浮動小数点数=>整数への変換
float から整数に変換する場合、その数はゼロのほうに丸められる。
浮動小数点
いわゆる小数点。
文字列
4種類の複合型
- 配列 array
- オブジェクト object
- コールバック関数 callable
- 関数が実行中に実行される関数
- iterable
配列
オブジェクト
コールバック関数 callable
◉ コールバックに関する記事
http://wa3.i-3-i.info/word12295.html
https://qiita.com/geshi/items/2ca7628db9091de6ac43
https://qiita.com/pocket8137/items/df5afba90b51e90587a5
iterable
2つの特別な型
- resource
- null
resource
null
型チェックに使える関数
チェックさえできればOK var_dump()
型を取得 gettype()
その他諸々
- settype() - 変数の型をセットする
- get_class() - オブジェクトのクラス名を返す
- is_array() - 変数が配列かどうかを検査する
- is_bool() - 変数が boolean であるかを調べる
- is_callable() - 引数が、関数としてコール可能な構造であるかどうかを調べる
- is_float() - 変数の型が float かどうか調べる
- is_int() - 変数が整数型かどうかを検査する
- is_null() - 変数が NULL かどうか調べる
- is_numeric() - 変数が数字または数値形式の文字列であるかを調べる
- is_object() - 変数がオブジェクトかどうかを検査する
- is_resource() - 変数がリソースかどうかを調べる
- is_scalar() - 変数がスカラかどうかを調べる
- is_string() - 変数の型が文字列かどうかを調べる
- function_exists() - 指定した関数が定義されている場合に TRUE を返す
- method_exists() - クラスメソッドが存在するかどうかを確認する
型の比較