タイトル: キャスト
型を明示的に変換させることをキャストという。PHPは動的型付け言語で型変換が自動で行われる場面が多いものの、意図を明確にするためや厳密モード下では明示キャストが有効です。
以下、キャストの構文。
(変換後のデータ型)変換対象の変数;
例:int(100.10)
nullへ変換する場合は、unset(変換対象の変数); となる。
主要なキャスト記法
| 記法 | 意味 |
|---|---|
(int) / (integer) | 整数へ変換 |
(float) / (double) / (real) | 浮動小数点へ変換 |
(string) | 文字列へ変換 |
(bool) / (boolean) | 真偽値へ変換 |
(array) | 配列へ変換 |
(object) | オブジェクトへ変換 |
(unset) | NULLへ変換(PHP 7.2以降は非推奨、PHP 8で削除) |
使用例
|
$x = (int) 100.10; // 100 |
関数によるキャスト
キャスト記法以外にも、組み込み関数で型変換できます。
| 関数 | 用途 |
|---|---|
intval($v) | 整数化(2進・8進・16進指定も可) |
floatval($v) | 浮動小数点化 |
strval($v) | 文字列化 |
boolval($v) | 真偽値化(PHP 5.5+) |
settype($v, "int") | 変数自体の型を変更 |
(int)$v 等 | キャスト記法(同等) |
真偽値変換のルール(falsy値)
| 値 | (bool)変換 |
|---|---|
false | false |
0 / 0.0 | false |
"" / "0" | false |
null | false |
[](空配列) | false |
| 上記以外 | true |
注意: "0" はfalseだが "0.0" や "false" や " "(空白)はtrue。
暗黙の型変換
PHPは演算時に自動で型変換する。明示キャストの方が読みやすい。
|
echo "5" + 3; // 8(文字列 + 数値 = 数値) |
注意点
- 非数値文字列のint変換: PHP 8で動作が厳しくなった(
(int) "abc"は0、Warning出る場合あり) - 浮動小数点→整数: 切り捨て(
(int) 1.9 == 1)。四捨五入はround() - 配列→オブジェクト: 配列の各キーがプロパティになる(
stdClass) - 大きな数値: PHP_INT_MAXを超えると float になる
関連
- 親カテゴリ: 文法 (PHP)
- データ型: データ型
- 関連エラー: A non well formed numeric value encountered