PHPリファレンス
UPDATE:2019年11月11日
PHP の キャスト演算子
PHP4 PHP5 PHP7
1 Minute Note
- キャスト演算子 は 右辺オペランドのデータ型を指定した型に変換する
(string) | (int) (integer) |
(float) (real) | (bool) (boolean) |
(array) | (object) |
(unset) |
PHPにはデータ型を変換(キャスト)する演算子が用意されています。これらの演算子をキャスト演算子と言います。
キャスト演算子とは
POINT
- キャスト演算子 は 右辺オペランドのデータ型を指定した型に変換する
キャスト演算子は、右辺オペランドを特定の型で扱うことが出来ます。この演算子で指定した値の型をキャスト(変換)することが出来ます。演算子の右にオペランドを配置します。
オペランドとは演算子の対象となる値のことです。
以下の例では 「'(シングルクォート)」で囲んでいる '10' は文字列型として扱われます。「"(ダブルクォート)」や「'(シングルクォート)」で囲むと文字列型となります。文字列型をキャスト演算子 (int) で整数型へ変換します。
1 2 3 4 5 6 7 | <!-- サンプルコード --> <?php $a = '10'; $b = (int) $a; echo gettype($a)."<br>\n"; echo gettype($b)."<br>\n"; ?> |
結果は
string
integer
integer
となります。
PHPでは半角スペースや改行は無視されるので、以下は同じ意味になります。
1 2 3 4 5 | <!-- サンプルコード --> <?php $foo = (int) $bar; $foo = ( int ) $bar; ?> |
※括弧の中ではタブとスペースを使用することが出来ます。
PHPは型付けの弱い言語
型のジャグリング
PHPは型付の弱い言語で、型を宣言せずとも、変数を定義することが出来ます。その際、PHPは規則に応じてデータ型の変換を自動で行います。このような自動的に行われるデータ型の変換のことを型のジャグリングと言います。型のジャグリングについてはこちら。ジャグリングは便利な機能ですが、意図的に特定の型として処理することがあります。そのような場合、キャスト演算子が利用できます。
キャスト演算子の種類
POINT
(string) | (int) (integer) |
(float) (real) | (bool) (boolean) |
(array) | (object) |
(unset) |
キャスト演算子の種類、優先順位、結合時の評価です。すべての演算子の種類や優先順位はこちらを参照下さい。
演算子 | 名前 | 優先順位 | 結合時の評価 | 例 | 結果 |
---|---|---|---|---|---|
(string) | キャスト | 1 | right | (string) $a | 指定したオペランド $a を文字列型として扱う。 |
(int)(integer) | キャスト | 1 | right | (int) $a | 指定したオペランド $a を整数型として扱う。 |
(float)(real) | キャスト | 1 | right | (float) $a | 指定したオペランド $a を浮動小数点型として扱う。 |
(bool)(boolean) | キャスト | 1 | right | (bool) $a | 指定したオペランド $a を論理型として扱う。 |
(array) | キャスト | 1 | right | (array) $a | 指定したオペランド $a を配列型として扱う。 |
(object) | キャスト | 1 | right | (object) $a | 指定したオペランド $a をオブジェクト型として扱う。 |
(unset) | キャスト | 1 | right | (unset) $a | 指定したオペランド $a をNULL型として扱う。 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | <?php $var = 3.14; $var = (string)$var; echo gettype($var)."<br>\n"; $var = (int)$var; echo gettype($var)."<br>\n"; $var = (bool)$var; echo gettype($var)."<br>\n"; $var = (float)$var; echo gettype($var)."<br>\n"; $var = (array)$var; echo gettype($var)."<br>\n"; $var = (object)$var; echo gettype($var)."<br>\n"; $var = (unset)$var; echo gettype($var)."<br>\n"; ?> |
結果は
string
integer
boolean
double
array
object
NULL
integer
boolean
double
array
object
NULL
となります。
サンプルコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | <!-- サンプルコード --> <h3>キャスト演算子</h3> <?php $var = '10'; $var = (string)$var; echo gettype($var)."<br>\n"; var_dump($var); echo "<hr/>\n"; $var = (int)$var; echo gettype($var)."<br>\n"; var_dump($var); echo "<hr/>\n"; $var = (bool)$var; echo gettype($var)."<br>\n"; var_dump($var); echo "<hr/>\n"; $var = (float)$var; echo gettype($var)."<br>\n"; var_dump($var); echo "<hr/>\n"; $var = (array)$var; echo gettype($var)."<br>\n"; var_dump($var); echo "<hr/>\n"; $var = (object)$var; echo gettype($var)."<br>\n"; var_dump($var); echo "<hr/>\n"; $var = (unset)$var; echo gettype($var)."<br>\n"; var_dump($var); echo "<hr/>\n"; ?> |
実行結果
キャスト演算子
string
string(2) "10"
string
string(2) "10"
integer
int(10)
boolean
bool(true)
double
float(1)
array
array(1) { [0]=> float(1) }
object
object(stdClass)#1 (1) { ["0"]=> float(1) }
NULL
NULL
タグ(=記事関連ワード)
日付
公開日:2019年10月14日
最終更新日:2019年11月11日
最終更新日:2019年11月11日
このカテゴリの他のページ
この記事へのコメント
トラックバックurl
https://wepicks.net/phpref-operators_cast/trackback/