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)