PHP 数据类型:类型转换
了解
PHP 在变量定义中不需要(或不支持)明确的类型定义;变量类型是根据使用该变量的上下文所决定的。也就是说,如果把一个string
值赋给变量$var
,$var
就成了一个string
。如果又把一个integer
赋给$var
,那它就成了一个integer
。
参考 PHP基本数据类型
- 字符串(String)
- 整型(Integer)
- 浮点型(Float)
- 布尔(Boolean)
- 数组(Array)
- 对象(Object)
- NULL(空值)
为什么
程序为什么需要转换类型,讲一个经常遇到的例子:你的网站内容比较多,有分页的功能;你在url
传递一个变量page
作为表示当前页,但是因为url
是get
方式传递的(显式的);非法用户可能会篡改,你就需要将page
变量强制转换成整型(Integer),保证程序的安全和良好体验性。
开始
PHP 转换类型分为两种:一种自动类型转换,另外是强制类型转换。
1. 自动类型转换
字符串转整型(Integer)
<?php $a = '11'; var_dump($a+5); ?>
输出结果:
int(16)
使用
var_dump()
函数可以打印变量类型使用
gettype()
函数只会返回变量类型(不携带内容)这个例子可以看见,变量 a 在定义的时候是一个字符串类型,但是在执行加法操作后,变成了整型(Integer)
字符串转浮点型
<?php $a = '1.25'; $b = $a*10; var_dump($b); ?>
输出结果
double(12.5)
2. 强制类型转换
允许强制转换的类型 (来自PHP手册)
- (int),(integer) - 转换成整型
- (bool),(boolean) - 转换成布尔型
- (float),(double),(real) - 转换成浮点型
- (string) - 转换成字符串
- (array) - 转换成数组
- (object) - 转换成对象
PHP强制类型转换有三种转换方式:
- 在要转换的变量之前加上用括号括起来的目标类型,如
(int)$a
- 使用3个具体类型的转换函数,
intval
、floatval()
、strval()
- 使用通用类型转换函数
settype(mixed var,string type)
第一种转换方式:(int) (bool) (float) (string) (array) (object)
<?php
$num1 = 3.14;
$num2 = (int)$num1;
var_dump($num1);//输出float(3.14)
var_dump($num2);//输出int(3)
?>
第二种转换方式:intval() floatval() strval()
<?php
$str = '12.3php';
$int = intval($str); //输出int(12)
$float = floatval($str);//输出float(12.3)
$newStr = strval($str);//输出string("12.3php")
?>
第三种转换方式:settype()
<?php
$num = 12.8;
$result = settype($num,"int");
var_dump($result);//输出bool(true) 转换成功
var_dump($num);//输出int(12)
?>