PHP通常会从使用的上下文中正确猜出您打算使用的数据类型,但是有时手动强制类型很有用。这可以通过在声明的前面加上括号中所需类型的名称来实现:
$bool = true;
var_dump($bool); // 布尔值(true)
$int = (int) true;
var_dump($int); // 整数(1)
$string = (string) true;
var_dump($string); // string(1) "1"
$string = (string) false;
var_dump($string); // string(0) ""
$float = (float) true;
var_dump($float); // 浮动(1)
$array = ['x' => 'y'];
var_dump((object) $array); // object(stdClass)#1 (1) { ["x"]=> string(1) "y" }
$object = new stdClass();
$object->x = 'y';
var_dump((array) $object); // array(1) { ["x"]=> string(1) "y" }
$string = "asdf";
var_dump((unset)$string); // 空值但请注意:并非所有类型强制转换都能像人们期望的那样工作:
// 对于32位系统,以下3条语句有效(PHP_INT_MAX = 2147483647) // 大于PHP_INT_MAX的整数值将自动转换为float: var_dump( 999888777666 ); // 浮动(999888777666) // 强制(int)会产生溢出: var_dump((int) 999888777666 ); // 整数(-838602302) // 但是在字符串中它只返回PHP_INT_MAX var_dump((int) "999888777666"); // 整数(2147483647) var_dump((bool) []); // bool(false)(空数组) var_dump((bool) [false]); // 布尔值(true) (non-empty array)