Caution
お使いのブラウザはJavaScriptが実行できない状態になっております。
当サイトはWebプログラミングの情報サイトの為、
JavaScriptが実行できない環境では正しいコンテンツが提供出来ません。
JavaScriptが実行可能な状態でご閲覧頂くようお願い申し上げます。
(int) / (string) / (array) キャスト対応: PHP 4(2000)
変数の型を別の型に変換します。PHPは型の自動変換が行われる言語ですが、明示的にキャストすることで意図しない動作を防ぐことができます。
構文
// キャスト演算子で型を変換します。 (int) $value; (string) $value; (float) $value; (bool) $value; (array) $value; // settype() で変数の型を直接変更します。 settype($var, $type);
キャスト一覧
| キャスト | 概要 |
|---|---|
| (int) / (integer) | 整数に変換します。小数点以下は切り捨てられます。数値として解釈できない文字列は『0』になります。 |
| (string) | 文字列に変換します。配列は『"Array"』、『true』は『"1"』、『false』と『null』は空文字列になります。 |
| (float) / (double) | 浮動小数点数に変換します。数値として解釈できない文字列は『0.0』になります。 |
| (bool) / (boolean) | 真偽値に変換します。『0』『""』『"0"』『null』『空配列』が『false』、それ以外は『true』になります。 |
| (array) | 配列に変換します。スカラー値は要素1つの配列に、オブジェクトはプロパティを配列化します。 |
| settype($var, $type) | 変数自体の型を変更します。$type には『"int"』『"string"』『"float"』『"bool"』『"array"』を指定します。 |
サンプルコード
<?php
// 文字列を整数に変換します。
$str = "42";
$num = (int) $str;
echo $num; // 『42』と出力されます。
var_dump($num); // 『int(42)』と出力されます。
// 小数を整数にキャストすると小数点以下が切り捨てられます。
echo (int) 3.9; // 『3』と出力されます。
// 数値として解釈できない文字列は 0 になります。
echo (int) "abc"; // 『0』と出力されます。
echo (int) "123abc"; // 先頭の数値部分が変換され『123』と出力されます。
// 文字列へのキャストです。
echo (string) 100; // 『100』と出力されます。
echo (string) true; // 『1』と出力されます。
echo (string) false; // 空文字列が出力されます。
echo (string) null; // 空文字列が出力されます。
// 真偽値へのキャストです。
var_dump((bool) 1); // 『bool(true)』と出力されます。
var_dump((bool) 0); // 『bool(false)』と出力されます。
var_dump((bool) ""); // 『bool(false)』と出力されます。
var_dump((bool) "0"); // 『bool(false)』と出力されます。
var_dump((bool) "abc"); // 『bool(true)』と出力されます。
// 配列へのキャストです。
$val = "Hello";
print_r((array) $val); // 要素1つの配列になります。
// settype() で変数自体の型を変更します。
$price = "1980";
settype($price, "int");
var_dump($price); // 『int(1980)』と出力されます。
// intval() を使った変換も可能です。第2引数で基数を指定できます。
echo intval("0xFF", 16); // 16進数として解釈され『255』と出力されます。
echo intval("077", 8); // 8進数として解釈され『63』と出力されます。
概要
PHPの型キャストは、変数を明示的に別の型に変換する仕組みです。フォームから受け取った値は常に文字列型のため、数値として計算に使う場合は『(int)』や『(float)』で明示的にキャストすることを推奨します。PHPは自動型変換を行いますが、暗黙の変換に頼るとバグの原因になります。
キャスト演算子は新しい変換後の値を返すだけで元の変数は変更しません。変数自体の型を変更したい場合は『settype()』を使用してください。
型の判定には『is_array() / is_string() / is_numeric()』を使用してください。変数の存在確認や空判定には『isset() / empty()』が便利です。
記事の間違いや著作権の侵害等ございましたらお手数ですがこちらまでご連絡頂ければ幸いです。