第四章:第9节 PHP数据类型相互转换

更新于:2018-03-21 13:09:09

对于强类型编程语言,数据的转换是很麻烦的事情,在PHP这样的弱类型编程语言里,数据的转换大多一行代码搞定。


数值型-》字符串型


$v1 = 7;

$v2 = (string)$v1;

$v3 = $v1.'';


$v1是整数型7,在$v1前面加上(string),在$v1后面链接一个空字符,$v1就变成字符串7了,浮点型一样。

一般很少需要把数值型转成字符串型的,确切说如果有需要PHP会自动把数值型转成字符串型的。


字符串-》整数型


$v1 = '7';

$v2 = (int)$v1;

$v3 = intval($v1);


$v1是字符串7,可以通过上面两种方法把它转成整数7。一种是强制转换语法在变量前加上(int),一种依靠函数intval。intval用的还是比较多的一个函数,它的参数支持浮点型、布尔值、NULL。


如果是这样的字符串:


$v1 = '7xxxx';

$v2 = (int)$v1;

$v3 = intval($v1);


1.png

看效果:

1.png

它也会转成整数7



如果是这样的字符串:


$v1 = 'x7xxx';

$v2 = (int)$v1;

$v3 = intval($v1);


效果为这样:


1.png


通过上面的例子我们应该有所了解了,字符串转整数,只把字符串前面的数字字符转成整数。


提示:


字符串'07'、'07aa'都会转成十进制整数型7,而不是八进制7。


字符串'023'会转成十进制23,而不是转成十进制19表示这个八进制。


字符串'0x19'转成十进制0,而不是转成十进制25表示这个十六进制。


浮点型转整数也适用这两个方法。


整数、字符串转浮点型也可以用强制转换方法,在变量前加上(float)。


注意的地方:


如果你当前的PHP版本是32位的(32位系统安装的PHP一定是32位的;64位系统安装的PHP可以是64位的,也可以是32位的),一定要注意整数的取值范围-2147483647 ~ 2147483647

1.png

超过这个范围的取值,PHP会把这个数转成浮点型


记住:决不要将超过范围的数值强制转换为 integer,这样会导致不正确的结果。


那这个范围是怎么算出来的呢?

32位的顾名思义一次性只能操作32位(8位等于一个字节),最高位用来表示符号,故计算方式:

最大数:2147483647 = 2^31 - 1

最小数:最大数取反


如果PHP是64位的,那这个范围:

最大数:9223372036854775807 = 2^63 - 1

最小数:最大数取反



其他数据类型-》布尔类型


在一个变量前加上(bool),这个变量就会强制转换布尔类型


字符串''、'0'转成布尔值是假false,其他的都会转成布尔值真true。


1.png

效果:

1.png


记住'0'转成布尔值是假,在PHP中就是这样规定。


对于整数型、浮点型等于0的会转成布尔值假false,其他都会转成布尔值真true。NULL类型转成布尔值是假false。


布尔类型-》其他数据类型


布尔类型假false,转成整数型是0,转成浮点型是0,转成字符串类型也是0。

布尔类型真true,转成整数型是1,转成浮点型是1,转成字符串类型还是1。


前面我们学习的if判断语句,小括号里其实不用布尔值,其他数据类型也可以,它会自动强制转换成布尔值类型的。

1.png


效果:


1.png

本节学习代码》》》