PHP 类型转换

PHP 在变量定义中不需要(或不支持)明确的类型定义;变量类型是根据使用该变量的上下文所决定的。也就是说,如果把一个字符串值赋给变量 $var,$var 就成了一个字符串。如果又把一个整型值赋给 $var,那它就成了一个整数。

PHP 自动类型转换的一个例子是加法运算符 +。如果任何一个操作数是浮点数,则所有的操作数都被当成浮点数,结果也是浮点数。否则操作数会被解释为整数,结果也是整数。注意这并没有改变这些操作数本身的类型,改变的仅是这些操作数如何被求值以及表达式本身的类型。

var_dump() 函数显示关于一个或多个表达式的结构信息,包括表达式的类型与值。数组将递归展开值,通过缩进显示其结构。

					
<?php
  $str = "0";                     //$str 是字符串 (ASCII 48)
  $str += 2;                      //$str 现在是一个整数 (2)
  $str = $str + 1.3;              //$str 现在是一个浮点数 (3.3)
  $str = 5 + "10 Little Piggies"; //$str 是整数 (15)
  $foo = 5 + "10 Small Pigs";     //$str 是整数 (15)
 ?>
					
				

转换为整型

能转换为整数的类型只有:浮点数、布尔值,字符串和资源。数组、对象不能转换为数值类型。

PHP 7.0.0 起,NaN 和 Infinity 在转换成 integer 时,不再是 undefined 或者依赖于平台,而是都会变成零。

转换为浮点型

转换为浮点数时,除了字符串转换为浮点数时有自己的一套规则外,其他值都是先转换为整数(在能转换为整数的前提下),再转换为浮点数。

					
echo 0+"0xff";    //0 
echo 0+"2.33";    //2.33 
echo 0+"033";     //33 
echo 0+"2e3";     //2000
					
				

转换为字符串

转换为布尔值

当其它值转换为 布尔值 时,只有以下这些值会转换为 false,其他的全都转换为 true:

转换为数组

整数、浮点数、布尔值、字符串转换为数组时,得到一个新数组,数组只有一个元素,该元素值就是相应的整数、浮点数、布尔值、字符串。

将null转换为数组时,结果是一个空数组:

					
echo var_dump((array)null);   //array(0){}
					
				

类型强制转换

PHP 类型强制转换和 C 类型强制转换类似:在要转换的变量之前加上用圆括号括起来的目标类型。这种方式并没有改变变量的数据类型,而只是改变了表达式的数据类型。

PHP 类型强制转换
(目标类型)变量说明
(int)/(integer)转换为整形 integer。
(bool)/(boolean)转换为布尔类型 boolean。
(float)/(double)/(real)转换为浮点型 float。
(string)转换为字符串 string。
(array)转换为数组 array。
(object)转换为对象 object。
(unset)转换为 NULL (PHP 5)。
(binary)转换和 b 前缀转换支持为 PHP 5.2.1 新增。
					
<?php
  $int_var = 1;                   //integer
  $str_var = (string)$int_var;    //string
  $bool_var = (boolean)$str_var;  //boolean
 ?>
					
				

settype(var, type) 函数