PHPの全型を網羅。intやstringの基本から、ヒアドキュメント、NULL、NAN、callableまで解説。変数展開やキャストの挙動など、PHP: 型 - Manualの要点をサンプルコードで素早く引ける実践リファレンスです。
整数(integer)は、10 進数(基数 10)、16 進数(基数 16)、8 進数(基数 8)あるいは 2 進数(基数 2)表記で指定可能。
正の値(+)負の値(-)を数値の前に付与可能。
<?php
$num = 1234; // 10進整数
$num = -1234; // 負の値
$num = 01234; // 8進整数 (0で始まる数値は8進数とみなされる)
$num = 0xffff; // 16進整数 (0xで始まる数値は16進数とみなされる)
$num = 0b11000100; // 2進整数 (0bで始まる数値は2進数とみなされる)(PHP 5.4.0以降)
?><?php
$num = 1.234; /* 浮動小数点数 */
$num = 1.2e3; /* 浮動小数点数(指数表記) 1.2 × 103 */
$num = 7E-10; /* 浮動小数点数(指数表記) 7 × 10 - 10 */
$num = 123_456_789; /* 数値リテラルセパレータ(PHP 7.4.0 以降) */
?>true、false を指定する。小文字、大文字の区別はない。
<?php
$bool = true;
$bool = false;
$bool = TRUE;
$bool = True;
?>一般的に、true は整数の 1、false は 整数の 0 として扱わる。
※VBなどの一部言語では true は -1 なので注意が必要。
Javaは boolean型と数値の互換性はない。よって、true は整数の 1、false は 整数の 0 としての扱いはない(コンパイルエラー)
true、false を整数として扱い比較するのは、バグの温床になりやすい。
比較は if ($a === true)、if ($a === false) のような厳密な比較を行うことが、可読性が高く望ましい。
<?php
echo (int)true; /* 1 表示 */
echo (int)false; /* 0 表示 */
echo intval(true); /* 1 表示 */
echo intval(false); /* 0 表示 */
echo (bool)0; /* 表示されない */
echo (bool)'0'; /* 表示されない */
echo (bool)"0"; /* 表示されない */
echo (bool)1; /* 1 表示 */
echo (bool)-1; /* 1 表示 */
echo (bool)123; /* 1 表示 */
echo (bool)'1'; /* 1 表示 */
echo (bool)"1"; /* 1 表示 */
?>文字列はシングルクオーテーション(')、ダブルクォーテーション(")で囲む。ダブルクォーテーションで囲まれた文字列の中ではエスケープシーケンスを使用できる(※シングルクオーテーションでは使用できない)。
<?php
$str = 'Hello'; /* Hello 表示 */
$str = "Hello"; /* Hello 表示 */
?>シングルクオーテーションで囲まれた文字列の中で、文字としてシングルクオーテーションを使いたい場合は \' を、ダブルクォーテーションで囲まれた文字列の中で、文字としてシングルクオーテーションを使いたい場合は \" を使用する。
<?php
$str = 'Hello \'World\' '; /* Hello 'World' 表示 */
$str = "Hello \"World\" "; /* Hello "World" 表示 */
?>シングルクオーテーションで囲まれた文字列の中でダブルクォーテーションを使用できる。また、ダブルクォーテーションで囲まれた文字列の中でシングルクオーテーションを使用できる。
<?php
$str = 'Hello "World" '; /* Hello "World" 表示 */
$str = "Hello 'World' "; /* Hello 'World' 表示 */
?>| エスケープシーケンス | 機能 |
|---|---|
| \" | 二重引用符 |
| \n | ラインフィード (LF またはアスキーの 0x0A (10)) |
| \r | キャリッジリターン (CR またはアスキーの 0x0D (13)) |
| \\ | バックスラッシュ |
| \t | 水平タブ (HT またはアスキーの 0x09 (9)) |
| \v | 垂直タブ (VT またはアスキーの 0x0B (11)) |
| \e | エスケープ (ESC あるいはアスキーの 0x1B (27)) |
| \f | フォームフィード (FF またはアスキーの 0x0C (12)) |
| \[0-7]{1,3} | 8進数: 正規表現 [0-7]{1,3} にマッチする文字シーケンスは、8 進数表記の 1 文字 (例:. "\101" === "A") です。 正規表現にマッチする文字シーケンスは、8 進数表記の 1 文字です。 1 バイトに収まらない部分は、何もメッセージを出さずにオーバーフローします (例: "\400" === "\000") 。 |
| \x[0-9A-Fa-f]{1,2} | 16進数: 正規表現 [0-9A-Fa-f]{1,2} にマッチする文字シーケンスは、16 進数表記の 1 文字(例: "\x41" === "A")です。 |
| \u{[0-9A-Fa-f]+} | Unicode: 正規表現 [0-9A-Fa-f]+ にマッチする文字シーケンスは、Unicode のコードポイントです。 そのコードポイントの UTF-8 表現を文字列として出力します。 シーケンスを波括弧で囲む必要があります。例 "\u{41}" === "A" |
<?php
$name = 'hogehoge';
echo "私の名前は $name です。"; /* 私の名前は hogehoge です。を表示 */
?>null 型は、PHPの unit 型(意味のある情報を持たないことを示す型)であり、単一の値 null しか持たない。
※PHPでは null 型は unit 型としているが、多言語では異なる。Unit型は「何もしない」ことを表す型、nullは「値がない」ことを表す値(またはその状態)という違いがある。
nullは「値が存在しないこと」を示す特別な値である。大文字・小文字は区別されない。ただし、nullと、未定義値は、is_null() などで判断する際の動作が異なる。
<?php
$var = null;
/* is_null($var) === true であり NULL型 が表示される */
if (is_null($var) === true) {
echo 'NULL型';
} else {
echo 'NULL型ではない';
}
?>| 関数 | unset() した変数 | 警告(Notice/Warning) |
|---|---|---|
| is_null() | true | 発生する |
| empty() | true | 発生しない |
| isset() | false | 発生しない |
<?php
$var = 'hogehoge';
unset($var);
/* is_null($var) === true であり NULL型 が表示される */
if (is_null($var) === true) {
echo 'NULL型' . '<br>';
} else {
echo 'NULL型ではない' . '<br>';
}
if (is_null($var) === true) {
echo 'is_null() は true' . '<br>';
} else {
echo 'is_null() は false' . '<br>';
}
if (empty($var) === true) {
echo 'empty() は true' . '<br>';
} else {
echo 'empty() は false' . '<br>';
}
if (isset($var) === true) {
echo 'isset() は true' . '<br>';
} else {
echo 'isset() は false' . '<br>';
}
?>| 値 | is_null() | empty() | isset() |
|---|---|---|---|
| 未定義値 | true ※1 | true | false |
| $var = null | true | true | false |
| $var = '' | false | true | true |
| $var = "" | false | true | true |
| $var = 0 | false | true | true |
| $var = 1 | false | false | true |
| $var = '0' | false | true | true |
| $var = "0" | false | true | true |
| $var = true | false | false | true |
| $var = false | false | true | true |
| $var = "ABC" | false | false | true |
※1 Warningが発生する(PHP Notice: Undefined variable)
<?php
$var = 'hogehoge';
unset($var);
/* is_null($var) === true であり NULL型 が表示される */
if (is_null($var) === true) {
echo 'NULL型' . '<br>';
} else {
echo 'NULL型ではない' . '<br>';
}
if (is_null($var) === true) {
echo 'is_null() は true' . '<br>';
} else {
echo 'is_null() は false' . '<br>';
}
if (empty($var) === true) {
echo 'empty() は true' . '<br>';
} else {
echo 'empty() は false' . '<br>';
}
if (isset($var) === true) {
echo 'isset() は true' . '<br>';
} else {
echo 'isset() は false' . '<br>';
}
?>PHPは変数宣言時に明示的な型定義を必要としない(動的型付け言語)である。変数の型は保存する値によって決まる。
$var に 文字列を代入すれば $var は String型になり、$var に 整数を代入すれば $var は int型になる。$var に 文字列を代入後、整数を代入すれば $var は int型になる。
変数を強制的に特定の型に変換したい場合は、キャストすることで特定の型に変換できる。
| キャスト | 機能 | 注意点 |
|---|---|---|
| (int) | 整数へのキャスト | |
| (integer) | (int) のエイリアス(別名) | 非推奨 |
| (bool) | 真偽値へのキャスト | |
| (boolean) | (bool)のエイリアス(別名) | 非推奨 |
| (float) | 浮動小数点数へのキャスト | PHPはC言語で作られている。PHPでdoubleまたはfloatと定義すると内部のC言語ではdoubleとして扱われる。 |
| (double) | (float) のエイリアス(別名) | 非推奨 |
| (real) | (float) のエイリアス(別名) | 非推奨。PHP 8.0.0で削除 |
| (string) | 文字列へのキャスト | |
| (array) | 配列へのキャスト | |
| (object) | オブジェクトへのキャスト | |
| (unset) | NULL値へのキャスト | |
| (binary) | バイナリ文字列へのキャスト | バイナリ文字列への対応はPHP5.2.1以上 |
<?php
(int) 整数
(integer) (int)と同義。非推奨
(bool) 真偽値
(boolean) (bool)と同義。非推奨
(float) 浮動小数点数
(double) (float)と同義。非推奨
(real) (float)と同義。非推奨。PHP 8.0.0で削除
(string) 文字列
(array) 配列
(object) オブジェクト
(unset) NULL値
(binary) バイナリ文字列(PHP5.2.1~)
?>![]() | 10日で使えるPHP | 未経験のサルでも分かるPHPの学習サイト 文系未経験、サルでも10日でPHPを使えるように内容を構成した独学向け学習サイト。不要な基礎はバッサリ切り捨て必要な基礎を十分に深堀した・・・ 続きを見る |