11
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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進数」として認識して欲しい時はそれぞれ「00x0b」をつける。

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

型の比較

11
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?