-
数据类型
变量的数据类型分为强数据类型和弱数据类型。
如果一个变量的类型取决于存放值的类型,这种语言称为弱数据类型语言。
如果声明变量是A类型,就不能存放B类型的数据,这种语言称为强数据类型语言。
PHP和JS都属于弱数据类型。
-
标量类型:
数据类型 描述 整型(integer) -2^31~2^31-2 浮点型(float) 布尔型(boolean) 字符串型(string)
1、整型
十进制
2、进制转换:
计算机中支持十进制、二进制、八进制、十六进制(0-9,A,B,C,D,E,F)。
例:
1、十进制0.2转换二进制
2、八进制123转成十进制
1*8^2+2*8^1+3*8^0
3、十六进制FF转成十进制
15*16^1+15*16^0=255
4、9转成二进制(反向取余)
3、PHP提供了一些函数来做进制转换
进制 缩写 单词 十进制 dec decimalist 八进制 oct octonary 二进制 bin binary 十六进制 hex hexadecimal
4、PHP变量中可以存储十进制、八进制、十六进制
八进制用八进制用0表示
5、浮点数(小数,也叫单精度):float
在PHP中,float和double是一样的。
浮点数转成二进制是乘2正向取整,可能会一直循环下去,所以浮点数保存的值是近似值。
注:在其他的语言如c,java,C#中浮点数有两种,一种是单精度(float),一种是双精度(double),双精度的范围比单精度要广。
注:不能用浮点数做比较。如:
如果要比较浮点数,通过bccomp(值1,值2,比较的小数位数)函数比较,如果两个数相同就返回0,如果左边的大于右边的就返回1,反之返回-1。如:
浮点数的范围比整型大:
理论上,浮点数的最大值是1.8E+308(1.8*10^308)
注:浮点数的精度有效位数是14位
6、布尔型(boolean)
布尔型就是true和false
打印布尔型使用var_dump()
7、字符串型
在Js中,字符串有单引号和双引号字符串一样的。
在PHP,如果字符串内没有变量,单引号和双引号显示的结果是一样的。
如果有变量,双引号中的变量要解析:
注:单引号是真正的字符串,双引号要做运算(将字符串中的变量替换成值),因为双引号要运算,单引号不需要运算,所以单引号的执行效率比双引号要高。
解决方法:可以将$name放到“{}”里面,{与$紧靠一起时“{}”不会显示,不分先后,紧靠一起就行。
8、转义字符
将具有特殊含义的字符转成普通字符
注:转义字符后面如果是特殊字符,将特殊字符转成普通字符,如果后面是普通字符,转义字符就是一个普通字符
转义字符和r,n,t组合时,/r表示回车,/n表示换行,/t表示制表符。
9、ASCII
计算机内部是用二进制计算。键盘上的每个字符都有一个编码和它对应,这个编码就是ASCII码
ASCII码用7位的二进制来表示,可以表示2^7个字符(128个)
ASCII是连续的。
小写字母比大写字母的大。 a>A
小写字母和大写字母之间相差32. a-A=32
ord()将字符转成十进制ASCII码
chr()将十进制的数字转成字符
“\”可以转义ASC码
10、使用定界符
作用:为输出大量的文本并且不用频繁地转义提供了简单的方法
开始和结束的定界符必须一样,名字由字符、数字、下划线组成,不能以数字开头
开启标识符前面三个小于号“<<<”
结束标识符必须顶格写,前面不能有空格和其他字符 ,标识符的后面也不能有空格。
字符串定界符分为heredoc和nowdoc
heredoc nowdoc
heredoc相当于是双引号字符串,nowdoc相当于单引号字符串。
-
复合数据类型
一、数组:计算机内存中一段连续的空间
1、索引数组
通过元素的位置作下标
2、关联数组
数组的值和一个字符串做关联,形成一个键值对。
二、数组的声明
方法1:变量=array();
方法2:通过[ ]的方式
默认情况下:在索引数组中,第一个元素的下标是0,后面依次加1。
例:
数组下标:
三、extract()
从数组中将变量导入到当前的符号表中,键名做变量名,键值做变量的值
四、数组的分类
1、按照元素的键值关系分为:
a、索引数组:通过元素的位置作下标
b、关联数组:通过字符串作下标,键和值存在某种关联。
注:不能按照键的数据类型来判断是否是索引还是关联数组,必须看下标和值关联关系,如:$stu=array(1=>'tom',2=>'berry') 属于关联数组,因为下标不是表示值的位置。
2、按照数组的结构分为:
a、一维数组
b、多维数组:二维以上
注:php中的二维数组和强数据类型不一样,它不是一个二维表,php数组的分类是应用层面的分类,不是php语言本身的分类。
-
特殊类型
一、资源:
php引用的外部数据
资源只能获取,不能创建
资源也有类别的,如连接资源,数据流资源。
二、NULL
表示没有定义的变量
NULL不区分大小写
调用一个没有返回值的函数,默认返回NULL