7.

キャスト

編集

型を明示的に変換させることをキャストという。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
$y = (int) "42abc";     // 42(先頭の数値部分)
$z = (float) "1.5";     // 1.5
$s = (string) 100;       // "100"
$b = (bool) 0;           // false
$b = (bool) "";          // false
$b = (bool) "0";         // false(要注意!)
$b = (bool) "false";      // true("false"という文字列はtrue)
$arr = (array) $obj;      // オブジェクト→連想配列

関数によるキャスト

キャスト記法以外にも、組み込み関数で型変換できます。

関数用途
intval($v)整数化(2進・8進・16進指定も可)
floatval($v)浮動小数点化
strval($v)文字列化
boolval($v)真偽値化(PHP 5.5+)
settype($v, "int")変数自体の型を変更
(int)$vキャスト記法(同等)

真偽値変換のルール(falsy値)

(bool)変換
falsefalse
0 / 0.0false
"" / "0"false
nullfalse
[](空配列)false
上記以外true

注意: "0" はfalseだが "0.0""false"" "(空白)はtrue。

暗黙の型変換

PHPは演算時に自動で型変換する。明示キャストの方が読みやすい。

echo "5" + 3;   // 8(文字列 + 数値 = 数値)
echo "5" . 3;   // "53"(文字列連結)
echo 0 == "abc"; // PHP 8 では false(7では true で罠だった)

注意点

  • 非数値文字列のint変換: PHP 8で動作が厳しくなった((int) "abc" は0、Warning出る場合あり)
  • 浮動小数点→整数: 切り捨て((int) 1.9 == 1)。四捨五入は round()
  • 配列→オブジェクト: 配列の各キーがプロパティになる(stdClass
  • 大きな数値: PHP_INT_MAXを超えると float になる

関連

編集
Post Share
子ページ

子ページはありません

同階層のページ
  1. 基本事項
  2. HTMLへの埋め込み
  3. 変数
  4. 可変変数
  5. 定数
  6. データ型
  7. キャスト
  8. エスケープ文字
  9. 配列
  10. 演算子
  11. 代入の際の注意点
  12. 条件分岐
  13. 繰り返し処理
  14. クラスとインスタンス
  15. コンストラクタ
  16. 関数
  17. スーパーグローバル変数
  18. スコープ
  19. staticについて
  20. yieldについて
  21. ファイルのアップロード方法
  22. DB接続方法
  23. SQL実行方法
  24. カプセル化の具体例
  25. 継承の構文
  26. オーバーライド
  27. ポリモーフィズム(多様性)の具体例
  28. 抽象クラス・メソッドの構文と具体例
  29. GET通信
  30. try catchで全てのエラーを拾う方法