PHP基础02-数据类型

数据类型
在PHP中指的是存储的数据本身的类型,而不是变量的类型。PHP是一种弱类型语言,变量本身没有数据类型

三大类八小类:

简单(基本)数据类型:4个小类

整型:int/integer,系统分配4个字节存储,表示整数类型(存的下的话)
浮动型float/double ,系统分配8个字节存储,标识小数或者整形存不下的整数
字符串型:string ,系统根据实际长度分配,表示字符串(引号)
布尔类型bool/boolea,表示布尔类型,只有两个值: true 和 false

复合数据类型:2个小类

对象类型 objet,存放对象(面向对象)
数组类型:array一次性存放多个数据

特殊数据类型:2个小类

资源类型:resource,存放资源数据(PHP外部数据,如数据库,文件)
空类型:NULL,只有一个值就是NULL(不能运算0

整形类型

整数类型:保存整数数值(范围限制),4个字节存储数据,最大就是32位,42亿多,但是在PHP中默认是有符号类型(区分正负数)

在PHP中提供了四种整形的定义方式:十进制定义,二进制定义,八进制,和十六进制定义。 (PHP默认输出为十进制)

$a=120 //十进制
$a=0b110 //二进制
$a=0120 //八进制
$a=0x120 //十六进制

进制转换函数(参考):

string decbin ( int $number )十进制转二进制
string decoct ( int $number )十进制转八进制
string dechex ( int $number )十进制转十六进制
同理反过来也可以使用
number bindec ( string $binary_string )二进制转十进制
string bin2hex ( string $str )二进制准啊十六进制
等等…

浮点类型

浮点型:小数类型以及超过整型所能存储范围的整数(不保证精度),精度范围大概在15个有效数字左右 (整型超过最大存储值时变成浮点型)

浮点型定义有两种方式

$f=1.23
$f=1.23e10 //其中e表示底数10

浮点数不宜做精确判断:

浮动数保存的数据不够精确,而且在计算机中凡是小数基本上存的都不精确

为何浮点数能表示更大的的数据

布尔类型

两个值true 和false通常用于做判断

类型转换

方式

1自动转换:系统根据需求自己判定,自己转换(用的比较多,效率比较低)
2强制(手动)转换:在变量之前增加一个括号(),在里面写上对应的类型:int/float……其中NULL类型用到unset()
在转换过程中,用的比较多的是转布尔类型(判断)和转数值类型(算术运算)

其他类型转布尔:

true或者false(少)

其他类型转数值:

  1. 布尔true为1,false为0
  2. 字符串转数值的规则
  • 以字母开头的字符串,永远为0
  • 以数字开头的字符串,取到碰到字符串为止
    (不会同时包含两个小数点)

类型判断;

通过一组类型判断函数,来判断变量,最终返回这个变量所保存数据的数据类型(相同结果为true,不同为false),
是一组以is_开头后面跟类型名字的函数:is_xxx(函数名)
bool类型不能用echo来查看(无法判断true指的是字符串还是布尔类型),可以使用var_dump结构查看 var_dump()

获取以及设定数据(变量)的类型

还有一组函数可以用来获取以及设定数据(变量)的类型
Gettype(变量名):获取类型,得到的是该类型对应的字符串
Settype(变量名,类型):设定数据类型:与强制转换不同

  1. 强制转换:(类型)变量名,是对数据值赋值的内容进行处理(不会处理实际存储的内容)

    可以看到$a实际存储没有改变

  2. Settype会改变实际存储的内容
    如下图可以看到$b的已经被转换成string类型(改变了实际存储的内容)

为空判断

bool empty ( mixed $var )

判断一个变量是否被认为是空的。当一个变量并不存在,或者它的值等同于FALSE,那么它会被认为不存在。如果变量不存在的话,empty()并不会产生警告。

bool isset ( mixed $var [, mixed $… ] )

检测变量是否设置,并且不是 NULL。
如果已经使用 unset() 释放了一个变量之后,它将不再是 isset()。若使用 isset() 测试一个被设置成 NULL 的变量,将返回 FALSE。同时要注意的是一个 NULL 字节(”\0”)并不等同于 PHP 的 NULL 常数。