PHPではあまり型のことを考えなくてもプログラミングができるが、自動的に型変換がなされるため時に思わぬ動作をすることがある。

PHPにはどんな型があるのか?

公式サイト http://php.net/manual/ja/language.types.intro.php

  • 基本の型
  • 擬似的な型

というものがある。
「擬似的な型」はドキュメント上でのみ出てくる「可読性をあげるための型」である。
「基本の型」 は更に 「4種類のスカラー型」「4種類の複合型」「2つの特別な型」 の3つに分類される。

4種類のスカラー型

  • 論理値 boolean
  • 整数 integer
  • 浮動小数点数 float(double)
  • 文字列 string

論理型 boolean

http://php.net/manual/ja/language.types.boolean.php

真偽の値を true false で表し、大文字・小文字は区別しない。

◉ true/falseを数値で表すと...(論理型=>整数への変換)

true が1、 false が0。

boolean に変換すると false になるもの

  • integer の 0 (ゼロ)
  • float の 0.0 (ゼロ)
  • 空の文字列、 および文字列の "0"
  • 要素の数がゼロである 配列
  • 特別な値 NULL (値がセットされていない変数を含む)

ゼロでない数字は全て true になる。(-1 とか)

整数型 integer

http://php.net/manual/ja/language.types.integer.php

{..., -2, -1, 0, 1, 2, ...} というような整数のこと。
普通に書けば10進数、「8進数・16進数・2進数」として認識して欲しい時はそれぞれ「00x0b」をつける。

$a = 1234; // 10進整数
$a = 0123; // 8進数 (10進数の83と等価)
$a = 0x1A; // 16進数 (10進数の26と等価)
$a = 0b11111111; // 2進数 (10進数の255と等価)

◉ 整数のオーバーフロー

大きすぎると、floatとして認識されるようになる。
その境目はPCのビット数に依存する。

◉ 浮動小数点数=>整数への変換

float から整数に変換する場合、その数はゼロのほうに丸められる。

浮動小数点

http://php.net/manual/ja/language.types.float.php#warn.float-precision

いわゆる小数点。

文字列

http://php.net/manual/ja/language.types.string.php

4種類の複合型

  • 配列 array
  • オブジェクト object
  • コールバック関数 callable
    • 関数が実行中に実行される関数
  • iterable

配列

http://php.net/manual/ja/language.types.array.php

オブジェクト

http://php.net/manual/ja/language.types.object.php

コールバック関数 callable

http://php.net/manual/ja/language.types.callable.php

◉ コールバックに関する記事

http://wa3.i-3-i.info/word12295.html
https://qiita.com/geshi/items/2ca7628db9091de6ac43
https://qiita.com/pocket8137/items/df5afba90b51e90587a5

iterable

http://php.net/manual/ja/language.types.iterable.php

2つの特別な型

  • resource
  • null

resource

http://php.net/manual/ja/language.types.resource.php

null

http://php.net/manual/ja/language.types.null.php

型チェックに使える関数

チェックさえできればOK var_dump()

http://php.net/manual/ja/function.var-dump.php

型を取得 gettype()

http://php.net/manual/ja/function.gettype.php

その他諸々

  • 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() - クラスメソッドが存在するかどうかを確認する

型の比較

http://php.net/manual/ja/types.comparisons.php

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.