一、自动转换(隐式转换)
1、其他类型转换成数值型
①boolean ---> 转换成数值型(整型、浮点型)
true -> 1 false -> 0
$a=1;
$b=false;
echo $a+$b; //1
$a=1;
$b=true;
echo $a+$b; //2
②string --> 转换成数值型
不是合法数字开头的字符串会转换成0,如:
"true" -> 0 "false" -> 0
$str="10.1";
$int=2.1;
echo $str+$int; //12.2
$str="2e3";
$int=1;
echo $str+$int; //2001
$str="abcd";
$int=1;
echo $str+$int; //1
$str="1abcd";
$int=1;
echo $str+$int; //2
$str="12a3b4c5";
$int=1;
echo $str+$int; //13
$str="12.1a3b4c5";
$int=1;
echo $str+$int; //13.1
$str="3E2ab3";
$int=1;
echo $str+$int; //301
1.数值类型的字符串转换成数值类型本身
2.当字符串中以合法数字开头的时候,一直取到你第一个非法数字之前
"123abcd" -> 123
"2e3b34" -> 2e3(2000)
"2E3b4e5" -> 2E3(2000)
$a=1;
$b="true"; //加双引号则为非法数字开头的字符串,去掉引号则为布尔型
echo $a+$b; //1
3.空字符串转换成数值类型
'' -> 0 "" -> 0 null -> 0
2、其他类型转换成字符串型
数值型 -> 值为数值本身的字符串
布尔类型
true -> 1
false -> 空字符串
数组 -> Array
对象 -> 不能转换成字符串
资源 -> Resource #id 数字
空 -> 空字符串
3、其他类型转换成布尔型
转换成布尔型的false:
0 -> false 0.0 -> false false -> false
'' "" '0' "0" -> false
空array() -> false null -> false
其他时候都是true
" " -> true "false"->true "0.0"->true
二、强制转换(显示转换)
(int) (integer) -> 强制转换成整型
(float) (double) (real) -> 强制转换成浮点类型
(string) -> 强制转换成字符串类型
(bool) (boolean) -> 强制转换成布尔类型
(array) -> 强制转换成数组
(object) -> 强制转换成对象
三、永久转换
settype($var ,type):设置变量的类型
type的值可为:
"boolean" (或为"bool",PHP4.2.0起)
"integer" (或为"int",PHP4.2.0起)
"float" (PHP4.2.0之后可用,旧版中使用"double")
"string"
"array"
"object"
"null" (PHP4.2.0起)