本教程操作环境:windows7系统、PHP7.1版、DELL G3电脑
PHP强制类型转换
PHP 中的强制类型转换和其他语言很类似,可以在要转换的变量之前加上用括号括起来的目标类型(例如$var = (int)3.1415;
),也可以使用具体的类型转换函数(例如 intval()
、floatval()
、strval()
等)或者 settype()
来转换类型。
使用在变量之前加上用括号括起来的目标类型的方式强制转换变量类型时,括号中允许使用的变量类型如下所示:
(int)
、(integer)
:转换成整型;(bool)
、(boolean)
:转换成布尔类型;(float)
、(double)
、(real)
:转换成浮点类型;(string)
:转换成字符串类型;(array)
:转换成数组类型;(object)
:转换成对象类型。
使用具体的转换函数 intval()
、floatval()
、boolval()
、strval()
等来转换变量的类型时,这些函数的作用如下所示:
intval():用于获取变量的整数值;
floatval():用于获取变量的浮点值;
boolval():用于获取变量的布尔值;
strval():用于获取变量的字符串值。
【示例】使用以上几个函数强制转换变量的类型。
<?php
$str = '123.456abc';
$int = intval($str);
echo '变量 $int 的类型为:'.gettype($int).'<br>';
$float = floatval($str);
echo '变量 $float 的类型为:'.gettype($float).'<br>';
$string = strval($str);
echo '变量 $string 的类型为:'.gettype($string);
?>
运行结果如下:
变量 $int 的类型为:integer
变量 $float 的类型为:double
变量 $string 的类型为:string
上面介绍的两种强制类型转换的方式都不会改变被转换变量本身的类型,而是通过将转换得到的新类型的数据赋值给新的变量,原变量的类型和值不变。
如果需要改变变量本身的类型可以使用 settype()
函数来完成,函数的语法格式如下:
settype(mixed &$var, string $type)
其中,$var 为要转换的变量;$type 为要转换的类型,可以是 boolean(bool)
、integer(int)
、float(double)
、string
、array
、object
、null
。
【示例】使用 settype() 函数强制转换变量的类型。
<?php
$str = (string)'123abc';
$bool = (bool)true;
settype($str, 'integer');
settype($bool, 'string');
echo '$str 的类型为:'.gettype($str).'<br> $bool 的类型为:'.gettype($bool);
?>
运行结果如下:
$str 的类型为:integer
$bool 的类型为:string
使用强制类型转换有以下几点需要注意:
整型转化为浮点型,由于浮点型的精度范围远大于整型,所以转化后的精度不会改变;
浮点型转化为整型,将会自动舍弃小数部分,只保留整数部分。如果一个浮点数超过整型数字的有效范围,其结果将是不确定的;
字符串转化为数字时,是从字符串开始到第一个不是数字的字符结束(不符合的内容清空),也就是说如果字符串第一个字符不是数字的话,转换后的结果为 0;
NULL 值转为字符串,结果为空字符。