PHP中,数据类型的转换主要有自动类型转换和强制类型转换两种;
PHP 中的自动类型是指在定义常量和变量时,不需要指定常量或变量的数据类型;
在代码执行过程中,PHP会根据需要将常量或变量转换为合适的数据类型,所以,数据类型的自动转换一般发生在对变量重新赋值和对不同类型的变量进行运算操作时;
在PHP中变量定义时不需要明确的数据类型定义,会根据使用变量的上下文环境及赋值的数据决定变量的类型;
在对变量重新赋予一个与之前不同数据类型的值后,变量的数据类型会自动转换;
例子 1:
$ble="Bob"; //$ble原来是 string类型 $ble=10; //重新给$ble赋值,$ble 由string 自动转换为integer类型;
对不同数据类型的变量进行运算操作时,一般算术运算符中的加法运算符 “+” 和连接符 “·”,会选择占用字节最多的一个运算数的数据类型作为运算结果的数据类型,而另一个操作数会自动转换为占用字节最多的那个运算符的数据类型;
例子 2:
在以下代码中,“+” 会自动按数字运算:
$x=1+1.2; //1.2为浮点数,1会被当做浮点数,运算结果2.2是浮点数 $y=2+"1.2"; //“1.2”自动转换为浮点数1.2,然后使用上一行转换规则进行加法运算 $z=3+"hello"; //"hello"转换为整型数据0,运算结果3是整型
例子3:
在以下代码中,“·” 会自动按字符串运算:
$b=1; $c=$b.'b'; //结果1a,将整型操作数1转换为“1”后与‘b’连接成‘1b’
例子 4:
<?php $a=true; $b=null; $c=1000; $d="100abc"; $e=0.1; //var_dump()函数输出数据的值、类型以及字 符串的长度 var_dump($a+$c); echo "<br>"; var_dump($b+$c); echo "<br>"; var_dump($c+$d); echo "<br>"; var_dump($c+$e); echo "<br>"; var_dump($e+$e); echo "<br>"; ?>
执行结果如下所示:
PHP中两种强制转换为指定的数据类型,语法如下:
(类型名)变量或表达式
类型名包括 int、integer、float、real、bool、boolean、array、object
,类型名两侧的括号一定不能省略;
int 和 integer 转换成整型,float、double和real 转换为浮点型,string 转换为字符串,bool 和 boolean 转换为布尔型,array 转换为数组,object 转换为对象;
例子 5:
$num1=3.1415926; $num2=(int)$num1; print_r($num1); //输出float(3.1415926) print_r($num2); //输出int(3)
PHP中数据类型的强制转换:
例子 6:
<?php $str="你好,欢迎访问菜鸟教程!"; echo "这是原始string形式:".$str; echo "<br>"; echo "这是boolean形式:".(boolean)$str; echo "<br>"; echo "这是integer形式:".(integer)$str; echo "<br>"; echo "这是原始float形式:".(float)$str; echo "<br>"; echo "这是原始array形式:".(array)$str; echo "<br>"; ?>
执行结果如下所示:
可使用 intval()、floatval()、strvar()、settype()
等函数实行类型的强制转换;
例子 7:
$str"321.8abc"; $int=intval($str); //转换为int型数值321 $float=floatval($str); //转换为float型数值321.8 $str=strval($float); //转换为string行“321.8” $num4=13.7; settype($num4,"int"); //将$num4中的数据转换为int型
强制转换类型转换使用起来比较方便,但也存在一些问题,如字符串转换为整型该怎么转,整型转成布尔型该怎么转,都需要一些明确的规定,PHP为此提供了相关的规定;