PHP 类型转换

示例

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)