基本类型
四种标量类型(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。*值可以被转换为一个整数,或者圆形()函数可以更精确地控制舍入
<?php
var_dump(25/7)// float(3.5714285714286)
var _dump((INT)(25/7)); // int(3)
var _ dump(round(25/7));
整数的转换要显式地将一个值转换为整数,请使用(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浮点数的一个常见问题的解答]//http://www.laruence.com/2013/03/26/2884.html
<?php
echo(int)((0.1 + 0.7 )* 10); //7
php float是采用IEEE 754表示精度,用54位二进制表示精度,在看似有穷的小数,在计算机的二进制表示里斯是无穷的,所以不是0.8而是0.79999999,强转只保留整数部分。所以是7。
字符串(string)
- 语法
单引号,双引号 - 操作字符串
- 连接
使用.来连接 - 字符串长度
strlen() 函数 - 字符串转大写或小写
strtoupper() 函数和strtolower() 函数 - 格式化字符串
输出到界面vprintf()函数
输出到变量sprintf() 函数 - 拆分字符串
explode() 函数 - 移除字符串两侧的指定字符
trim(字符串,指定字符) - 字符串转数组
explode(指定字符,字符串)
- 连接
数组(Arrays)
- 定义:
是一个有序映射(order map),一种将值与键关联的类型。可以看成是数组,向量,散列表(一个映射的实现),字典,集合,堆栈,队列等等,由于值可以是任意类型,所以又能作为树和多维数组。 - 语法:
用array()表示,如
<?php
$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的一部分,一个没有更多引用的资源会被自动检测到,并被垃圾收集器释放。出现这个原因,很少需要手动释放内存。(注:持久数据库链接是此规则的例外。它们不会被垃圾收集器销毁。)