基本类型
四种标量类型(bool,integer,float,string),三种组合类型(array,object,callback|callable),两种特殊类型(resource,null),一些伪类型[Pseudo-types](mixed,number,callback|callable,array|object,void)
(注:GetType函数可以获取变量类型,is_INT,is_string,is_bool等函数可判断变量类型。)
布尔(bool)
值不区分大小写
整数(integer)
语法
十进制:[1-9] [ 0-9 ] * | 0
十六进制:0 [XX] [0-9A-FA-F] +
八进制:0 [0-7] +二进制:0b [01] +(注:php5.4.0才支持)
整数:[+十进制| [+ - ]的十六进制| [+ - ]八进制| [+ - ]二进制?
整数值大小
如果PHP遇到超出整数类型范围的数字,它将被解释为float.32位系统上的整数的最大值是int(2147483647)即2 ^ 31-1,64位系统上的整数最大值是int(9223372036854775807)即2 ^ 63-1.
整数的运算
* PHP中没有整数除法运算符.1/2产生浮动0.5。*值可以被转换为一个整数,或者圆形()函数可以更精确地控制舍入
整数的转换要显式地将一个值转换为整数,请使用(INT)或(整数)强制转换。但是,在大多数情况下,不需要强制转换,因为如果运算符,函数或控制结构需要整数参数,则会自动转换值。也可以使用intval()函数将值转换为整数。
1,resource -> integer,那么结果将成为PHP在运行时分配给该值资源的唯一资源编号0.
2,bool ->integer,那么结果FALSE将产生0(零),TRUE并将产生1(一)0.
3,float ->integer,那么结果将只保留整数部分。
浮点数(float)
语法
LNUM [0-9]+
DNUM ([0-9][.]{LNUM}) | ({LNUM}[.][0-9])
EXPONENT_DNUM [+-]?(({LNUM} | {DNUM}) [eE][+-]? {LNUM})
(注:LNUM即长数,DNUMBER即双号)
数值大小
php float是采用IEEE 754表示精度,用54位二进制表示精度,在看似有穷的小数,在计算机的二进制表示里斯是无穷的,所以不是0.8而是0.79999999,强转只保留整数部分。所以是7。
字符串(string)
语法
单引号,双引号
操作字符串
连接
使用.来连接
移除字符串两侧的指定字符
trim(字符串,指定字符)
字符串转数组
explode(指定字符,字符串)
数组(Arrays)
定义:
是一个有序映射(order map),一种将值与键关联的类型。可以看成是数组,向量,散列表(一个映射的实现),字典,集合,堆栈,队列等等,由于值可以是任意类型,所以又能作为树和多维数组。
语法:
用array()表示,如
$array=array(
key => value,
key2 => value2,
key3 => value3,
...)//也可以不用写键,默认从0开始自增
$array= [ 值1,值2,值3 ] //从PHP 5.4开始,您还可以使用短数组语法,它用[]替换数组)。
$array= [
key => value,
key2 => value2,
key3 => value3,
... ];
一,key可以是Integer或String,value可以是任意类型。
二,除了Arrays和Object类型作为key会导致错误警告(非法偏移类型)外,其它类型作为key则会发生强转,有效十进制整数的字符串会转成整数,浮会去除小数部分转成整数,布尔会转成整数(真为1,假为0),零会转成空字符串。
三,数组可以同时包含整数和字符串键,因为PHP不区分索引数组和关联数组。
四,数组的键是唯一的,若相同则后面值覆盖前面的。
五,数组的键可以不用声明,那么它会按索引从0开始自增作为每个值的键。另外,一个key的值一定等于上一个key的值+1
数组类型
数值数组 - 带有数字 ID 键的数组
关联数组 - 带有指定的键的数组,每个键关联一个值
多维数组 - 包含一个或多个数组的数组
数组的长度
count() 函数用于返回数组的长度(元素的数量)
sizeof() 函数
数组的排序
sort() - 对数组进行升序排列
rsort() - 对数组进行降序排列
asort() - 根据关联数组的值,对数组进行升序排列
ksort() - 根据关联数组的键,对数组进行升序排列
arsort() - 根据关联数组的值,对数组进行降序排列
krsort() - 根据关联数组的键,对数组进行降序排列
(特别注意,排序后的数组的key和value的对应关系是不变的,可以使用array_values函数对数组进行排序,方便取数组中最大或最小的元素。)
利用数组中某个字段进行排序
array_multisort(sortarray,SortRank,s
o
r
t
a
r
r
a
y
,
S
o
r
t
R
a
n
k
,sortlist)
$sortarray是用来存储排序字段的数组,SortRank是排序条件,有以下两种:
SORT_ASC - 默认,按升序排列。(A-Z)
SORT_DESC - 按降序排列。(Z-A)
$sortlist是需要排序的数组,以遇到的问题为例:
list = [{"name": "小明","sort": 1},{"name": "小强","sort": 2},{"name": "小翔","sort": 3}]
foreach($list as $list2){
$sort[]=$list2["sort"];
}
array_multisort($sort,SORT_ASC,$list);
数组元素的操作
读取或修改数组元素
array[key]或array{key} 语法来访问。
删除数组元素
unset($arr[5])函数来删除,注意key的值不会被改变。要重新索引数组,可以使用array_values函数
array_pop() 函数删除数组中的最后一个元素
添加数组元素
array_push(array,value1,value2…)函数向数组尾部插入一个或多个元素
array_unshift(array,value1,value2,value3…)函数用于向数组插入新元素。新数组的值将被插入到数组的开头
arr[xxx]的方法可用于添加自定义键名的元素,另外也可考虑合并两个数组。a
r
r
[
x
x
x
]
的
方
法
可
用
于
添
加
自
定
义
键
名
的
元
素
,
另
外
也
可
考
虑
合
并
两
个
数
组
。array3 = array_combine(array1,a
r
r
a
y
1
,array2);
对象(object)
语法:
<?php class foo { function do_foo() { echo "Doing foo."; } } $bar = new foo; $bar->do_foo();
其它类型转对象
数组转换对象其中的属性通过键和相应的值来命名,除了数字键之外,除非迭代,否则这些数字键将不可访问。回调/可调用(Callbacks /可调参数)
回调/可调用(callback|callable)
定义
某些函数(如call _ user _ func()去回调某个方法或usort()去回调某个排序规则函数)接受用户定义的回调函数作为参数。函数不仅可以是简单的函数,还可以是对象方法,包括静态类方法。
资源(resource)
定义
一种特殊变量,保存了到外部资源的一个引用
资源释放 引用计数系统是Zend Engine的一部分,一个没有更多引用的资源会被自动检测到,并被垃圾收集器释放。出现这个原因,很少需要手动释放内存。(注:持久数据库链接是此规则的例外。它们不会被垃圾收集器销毁。)