一、数据类型
A、整体划分
标量类型: int--整形, float--小数点, string--字符串, bool--布尔两个值
复合类型: array, object
特殊类型: null, resouce
2、整数类型int, integer
3、3种整数表示法
十进制写法:123:
$n1 = 123;
八进制写法: 0123
$n2 = 0123;
十六进制写法: 0x123
$n3 = 0x123;
4、浮点类型: float, double, real
有两种写法:
$v1 = 1.234; //带小数点,,就是浮点类型
$v2 = 1.234E3;//含义是:1.234乘以10的3次方,即1234,带E的形式就是浮点数
$v3 = 1234E3;//结果值是1234000,但也是一个浮点数。
注意:浮点数不应直接进行大小比较
通常的做法:乘以10的精度位数数次方,比如精度要求3位有效数字,则乘以103次方
当整数运算的结果超出整数的范围后,会自动转换为浮点数。
5、字符串类型: string
6、布尔类型:bool, boolean
7、数组类型: arrar
8、对象类型 object:通常都是指自己定义的对象,纯语法的。
9、资源类型resource:指对外部数据的引用。
10、空类型 null
B、类型转换
a、自动转换:它会在各种运算中根据运算符的需要也将非该运算符所能处理的数据转换为可以处理的数据。
if(数据){}:转为bool类型
算术运算符:转为数字类型
连接运算符:转为字符串类型
比较运算符:转为布尔类型或数字类型
两边如果有至少一个布尔,则另一边就会转为布尔,并进行比较
否则,就转为数字进行比较
特别常用的一个转换(不管是自动转换还是强制转换),就是字符串转换为数字:
“5” ==>> 5 //整数
“5.5” ==>> 5.5浮点数
“5abc” ==>> 5整数
“5.5ab” ==>> 5.5浮点数
“abc5” ==>> 0整数
“abc” ==>> 0整数
“” ==>> 0
从左边开始一直到第一个不是数字的字符结束
b、强制转换:就是通过语法来让某数据转换为另一种类型的数据
输出数据类型:
能够输出一个变量的完整信息:var_dump()
获取一个变量的类型名称:getType()
isset(), empty(), unset();
isset()判断一个变量是否存在数据:
empty()判断一个数据是否为空:接近我们的日常观念(没有就是空)
unset():销毁(删除)一个变量。
is_XX类型() 系列函数:判断某个数据是否是某种类型,包括:
is_int(), is_float(), is_numeric(),is_bool(), is_array(), is_scalar()--检测变量是否是一个标量:
is_numeric()对:3, 3.5,“3”,“3.14”判断都是true
is_scalar():判断是否为标量类型(即int,float,stirng,bool)
二、运算符
1、算术运算符
有以下几个:+ - * / % ++ --
注意:注意取余运算%,先取整,再取余
$v1 = 7.5 % 3; //结果是:1
$v2 = 7.5 % 3.5; //结果是:1
2、自增自减运算符:
常规:对数字进行自加1或自减1。
字符串: 只能自增,且自增的效果就是“下一个字符”
布尔值递增递减无效
null递减无效,递增结果为1
3、前加加和后加加的区别:
前++:先完成变量的递增运算,再取得该变量的值参与别的运算。
后++:先将原来变量的值临时存储,再将变量值递增,最后再将临时存储的值参与别的运算。
4、比较运算符:
包括:> >= < <= != ==值大小的比较(判断) ===值大小和数据类型都比较 !==
==和===的区别:
==值大小的比较(判断)
===值大小和数据类型都比较
5、移位运算符
左移运算:<< A << n; //A是一个要被移动的数字,同样可以是普通数字,但按二进制去运算,n是一个指定要移动的位数
右移运算:>> A >> n; //A是一个要被移动的数字,同样可以是普通数字,但按二进制去运算,n是一个指定要移动的位数
6、条件(三目)运算符:
一般的运算符需要2个数据参与
有几个运算符只需要一个数据参与: ++, -- !
则:
条件运算符就需要至少3个数据参与!
形式为:
数据1 ? 数据2 :数据3
通常,数据1最终应该是一个布尔值(如果不是,则会当作布尔值来使用)。
含义:
如果数据1为true,则运算结果为数据2, 否则运算结果为数据3
7、错误控制运算符:@ 通常用于一个“可能”发生错误的表达式的前面——最常用的情形就是连接数据库。