一:PHP中的数据类型
数据类型:data type,在php中指的是存储的数据本身的类型,而不是变量的类型。
php是一种弱类型的语言,变量本身没有数据类型。
二: 三大类,八小类
1.简单数据类型:
(1) 整形:int/integer(系统分配4个字节存储,表示整数)
(2)浮点型:float/double(系统分配8个字节存储,表示小数或者整形存不下的整数)
(3)字符串型:string(系统根据实际长度分配,表示字符串(引号))
(4)布尔类型:bool/boolean(布尔类型,只有两个值true/false)
2.复合数据类型:
(5)对象类型:object,存放对象(面向对象)
(6)数组类型:array,存储多个数据(一次性)
3.特殊数据类型:
(7)资源类型:resource,存放资源数据(php外部数据,如数据库、文件)
(8)空类型:NULL,只有一个值就是NULL(不能运算)
三:类型转换
类型转换:在很多条件下,需要指定的数据类型,需要外部数据(当前php取得的数据)转换成目标数据
1.自动转换:系统根据自己的判断,自己转换(用的比较多,效率偏低)
2.强制转换:认为根据需要的目标类型转换
在转换过程中用的比较多的是转布尔类型(判断)和转数值类型(算术运算),先转换成数值类型(整形和浮点型)再计算
四:类型转换的方法
1.在变量前加一个括号(),然后在里面写上对应的类型:int等,NULL类型要用到unset()
$str1=123;
$str2=(String)$str1;
$str3=(object)$str1;
echo gettype($str2);
echo gettype($str3);
unset($str1);
echo gettype($str1)."<br>";
运行结果:string object NULL
2.intval(),floatval(),strval()转换成int,float,str类型
$str1=123;
$str2=floatval($str1);
$str3=strval($str1);
echo gettype($str2)."<br>";
echo gettype($str3)."<br>";
运行结果:double string
3.settype($str,“int”)转换成相对应的数据类型
$str=123;
echo gettype($str)."<br>";
settype($str,"object");//返回的是boolean值
echo gettype($str);//字符串类型
运行结果:integer object
五:类型判断
类型判断:通过一组类型判断函数,来判断变量,最终返回这个变量所保存数据的数据类型
1.is_开头后面跟类型名字的函数:is_xxx(变量名)(相同返回true,不同返回false)
$str=123;
echo is_int($str)."<br>";
settype($str,"object");
var_dump(is_string($str));
运行结果:1 false
2.bool类型不能用echo来查看,可以使用var_dump结构查看
3.使用getType()
getType()和setType()的区别
(1)getType()是获取数据类型得到的是该类型对应的字符串
(2)setType()会改变数据本身
$str=123;
echo gettype($str);//integer类型
settype($str,"string");//返回的是boolean值
echo gettype($str);//字符串类型
运行结果:integer string
六:简单数据类型
1.整数类型:保存整数数值(4个字节32位)默认有符号类型
Decbin():十进制转二进制
Decoct():十进制转八进制
Dechex():十进制转十六进制
Bindec():二进制转十进制
2.浮点类型:小数类型以及超过整数能存储范围的整数(不保证精度),精度范围在15个有效数字左右
浮点型定义的两种方式:$ f=1.23或$f=1.23e10
不要用浮点数做精确判断:浮点数保存的数据不够精确,而且在计算机中凡是小数基本保存都不精确
$f1=0.7;
$f2=2.1;
$f3=3;
if($f1==$f2/3){
echo "精准";
}else{
echo "不精准";
}
运行结果:不精准
3.布尔类型:两个值true和false,通常用于判断,需要注意类型转换
empty():判断一个变量是否被认为是空的。当一个变量并不存在,或者它的值等同于FALSE,那么它会被认为不存在。
isset():isset函数是检测变量是否设置。
语法:bool isset ( mixed var [, mixed var [, …]] )
返回值:
若变量不存在则返回 FALSE
若变量存在且其值为NULL,也返回 FALSE
若变量存在且值不为NULL,则返回 TURE
同时检查多个变量时,每个单项都符合上一条要求时才返回 TRUE,否则结果为 FALSE